自定义注解打jar包上传到maven私服

最近工作,有些功能在不同的模块总是会重复的应用,于是想把特定的功能做成一个注解,打成jar包,放到自己的maven私服上面。这里做一下记录(springboot)

一. 自定义注解

  1. 建一个注解接口,加上对应的注解信息

       @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管理

/**
 * 注册自定义的拦截器
 */
@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文件
若没有,则新建此文件

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

5.打jar包

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值