Discuss / Java / 编写一个MBean统计当前注册用户数量,并在jconsole中查看, done

编写一个MBean统计当前注册用户数量,并在jconsole中查看, done

Topic source

净净一隅

#1 Created at ... [Delete] [Delete and Lock User]

设计在注册成功后统计用户数量 

1. UserStatisticsMBean 

@Component
@ManagedResource(objectName = "springMVC2.com.jmx:name=UserStatistics", description = "User Statistics in register")
public class UserStatisticsMBean {
@Autowired
UserService userService;
private int usernum;

@ManagedAttribute(description = "Count user in learnjdbc.user from DataBase")
public int getUserNum() {
usernum=userService.countUsers();
return usernum;
}
}

2. RegisterInterceptor

@Component
public class RegisterInterceptor implements HandlerInterceptor {
final Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
UserStatisticsMBean userStatisticsMBean;

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
logger.info("postHandle {}.", request.getRequestURI());
if (modelAndView != null) {
userStatisticsMBean.getUserNum();
}
}
}

3. InterceptorsConfig 

@Configuration
public class InterceptorsConfig {
@Bean
WebMvcConfigurer createInterceptorsConfigure(@Autowired HandlerInterceptor[] interceptors) {
return new WebMvcConfigurer() {
public void addInterceptors(InterceptorRegistry registry) {
for (HandlerInterceptor interceptor : interceptors) {
if(interceptor instanceof AuthInterceptor ){
registry.addInterceptor(interceptor).addPathPatterns("/user/profile");
continue;
}
if(interceptor instanceof LoggerInterceptor ){
registry.addInterceptor(interceptor).addPathPatterns("/api/**");
continue;
}
if(interceptor instanceof RegisterInterceptor){
registry.addInterceptor(interceptor).addPathPatterns("/register");
continue;
}
registry.addInterceptor(interceptor);
}
}
};
}
}


  • 1

Reply