摘要:最近工作,有些功能在不同的模块总是会重复的应用,于是想把特定的功能做成一个注解,打成包,放到自己的私服上面。
最近工作,有些功能在不同的模块总是会重复的应用,于是想把特定的功能做成一个注解,打成jar包,放到自己的maven私服上面。这里做一下记录(springboot)
一. 自定义注解
建一个注解接口,加上对应的注解信息
@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.resources/META-INF/spring.factories文件
若没有,则新建此文件
org.springframework.boot.autoconfigure.EnableAutoConfiguration=cn.iamcrawler.www.crawler_annotation.config.InterceptorRegister
5.打jar包
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/69580.html
摘要:软件项目的管理就会变得简单很多。比如说的驱动程序,,在是获取不到的,就需要手工上传到里是仓库组,在里没有这个概念,是特有的。 什么是Maven Maven是一个采用纯Java编写的开源项目管理工具, Maven采用了一种被称之为Project Object Model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中.. Maven是一款跨平台的项目...
摘要:持续集成正是针对这一类问题的一种软件开发实践。持续集成的原则业界普遍认同的持续集成的原则包括需要版本控制软件保障团队成员提交的代码不会导致集成失败。 第一集 hudson+gradle+git+maven(非必选)持续集成编译,打包,发布到仓库集成 前言 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的...
阅读 2937·2021-10-11 10:58
阅读 1901·2021-09-24 09:47
阅读 479·2019-08-30 14:19
阅读 1609·2019-08-30 13:58
阅读 1415·2019-08-29 15:26
阅读 617·2019-08-26 13:45
阅读 2095·2019-08-26 11:53
阅读 1737·2019-08-26 11:30