自定義註解打jar包上傳到maven私服

最近工做,有些功能在不一樣的模塊老是會重複的應用,因而想把特定的功能作成一個註解,打成jar包,放到本身的maven私服上面。這裏作一下記錄(springboot)spring

一. 自定義註解springboot

  1. 建一個註解接口,加上對應的註解信息maven

    @Target(ElementType.METHOD)
       @Retention(RetentionPolicy.RUNTIME)
       public @interface CrawlerTimed {
       }
  2. 經過攔截器,攔截使用次註解的方法
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管理ide

/**
 * 註冊自定義的攔截器
 */
@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.resources/META-INF/spring.factories文件
若沒有,則新建此文件post

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\cn.iamcrawler.www.crawler_annotation.config.InterceptorRegister

5.打jar包code

相關文章
相關標籤/搜索