博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自定义注解打jar包上传到maven私服
阅读量:5796 次
发布时间:2019-06-18

本文共 2814 字,大约阅读时间需要 9 分钟。

最近工作,有些功能在不同的模块总是会重复的应用,于是想把特定的功能做成一个注解,打成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管理

/** * 注册自定义的拦截器 */@Configurationpublic 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包

转载地址:http://qabfx.baihongyu.com/

你可能感兴趣的文章
河北保定力建“智慧城市”主城区免费WiFi覆盖
查看>>
赋能未来的昆腾全新Scalar存储平台
查看>>
“P2P已死”亦或“断臂重生”
查看>>
爱立信利用弹性RAN助力软银将东京火车站数据速率提升40%
查看>>
SAP成立新基金SAP.iO,用数千万美元投资使用SAP资源研发产品的创业公司
查看>>
信息泄露事件频发 快递行业的隐私面单之战
查看>>
上海服务外包中心设立全球第四个分中心
查看>>
浅析各国大数据审计工作现状
查看>>
智慧酒店浪潮迭起 智驿共享多重盈利法则
查看>>
神华15亿投薄膜太阳能:奇葩买卖or布局未来?
查看>>
爱立信完成印尼首次5G演示
查看>>
在巨大的体量面前 华为是如何保持高效的战斗力的?
查看>>
数据中心优先:英特尔公司描述数据驱动领域的愿景
查看>>
Java基本类型与对象类型的区别导致的Bug剖析
查看>>
Coverity谈“开发中测试”与程序员最常犯的编码错误
查看>>
竟然有这么多方法可以获得iphone5C的数据,FBI你高兴不?
查看>>
以测试为核心的软件开发过程
查看>>
闪存的盲目应用:新技术亦无法解决所有问题
查看>>
如何带好软件测试新人
查看>>
《交互式程序设计 第2版》一3.9 导出Processing应用程序
查看>>