カスタムコメントjarカバンにmaven私服を送ります。
最近仕事をしていますが、いくつかの機能はモジュールごとに繰り返し応用されていますので、特定の機能を一つの注釈にして、Jarパッケージにして、自分のmaven私服に載せたいです。ここでメモしてください。
一.カスタムコメントは注釈インターフェースを構築し、対応する注釈情報 を付加する。は、傍受によって、次の注釈を使用する方法をブロックする 。
一.カスタムコメント
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface CrawlerTimed {
}
public class CrawlerInterceptor extends HandlerInterceptorAdapter {
private Logger logger = LoggerFactory.getLogger(CrawlerInterceptor.class);
/**
*
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HandlerMethod handlerMethod = (HandlerMethod)handler;
Method method = handlerMethod.getMethod();
//
CrawlerTimed crawlerTimed = method.getAnnotation(CrawlerTimed.class);
//
if(crawlerTimed != null){
long millis = System.currentTimeMillis();
request.setAttribute("startTime",millis);
logger.info(" :"+method.getName()+" :"+millis);
}
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
HandlerMethod handlerMethod = (HandlerMethod)handler;
Method method = handlerMethod.getMethod();
//
CrawlerTimed crawlerTimed = method.getAnnotation(CrawlerTimed.class);
//
if(crawlerTimed!=null){
long endTime = System.currentTimeMillis();
Long startTime =(Long) request.getAttribute("startTime");
long periodTime = endTime - startTime;
logger.info(" :"+method.getName()+" :"+endTime);
logger.info(" :"+method.getName()+" :"+periodTime +"ms");
}
}
}
3このブロックを登録してください。でないと、springに管理されません。/**
*
*/
@Configuration
public class InterceptorRegister extends WebMvcConfigurerAdapter {
// bean
@Bean
public CrawlerInterceptor crawlerInterceptor(){
return new CrawlerInterceptor();
}
// bean spring
@Override
public void addInterceptors(InterceptorRegistry registry){
registry.addInterceptor(crawlerInterceptor());
}
}
4.resoures/META-INF/spring.factoresファイルがない場合、このファイルを新規作成します。org.springframework.boot.autoconfigure.EnableAutoConfiguration=\cn.iamcrawler.www.crawler_annotation.config.InterceptorRegister
5.jarバッグを打つ