摘要:最近工作,有些功能在不同的模塊總是會重復的應用,于是想把特定的功能做成一個注解,打成包,放到自己的私服上面。
最近工作,有些功能在不同的模塊總是會重復的應用,于是想把特定的功能做成一個注解,打成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包
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/69580.html
摘要:軟件項目的管理就會變得簡單很多。比如說的驅動程序,,在是獲取不到的,就需要手工上傳到里是倉庫組,在里沒有這個概念,是特有的。 什么是Maven Maven是一個采用純Java編寫的開源項目管理工具, Maven采用了一種被稱之為Project Object Model (POM)概念來管理項目,所有的項目配置信息都被定義在一個叫做POM.xml的文件中.. Maven是一款跨平臺的項目...
摘要:持續集成正是針對這一類問題的一種軟件開發實踐。持續集成的原則業界普遍認同的持續集成的原則包括需要版本控制軟件保障團隊成員提交的代碼不會導致集成失敗。 第一集 hudson+gradle+git+maven(非必選)持續集成編譯,打包,發布到倉庫集成 前言 什么是持續集成 隨著軟件開發復雜度的不斷提高,團隊開發成員間如何更好地協同工作以確保軟件開發的質量已經慢慢成為開發過程中不可回避的...
閱讀 3098·2021-10-11 10:58
閱讀 2005·2021-09-24 09:47
閱讀 510·2019-08-30 14:19
閱讀 1708·2019-08-30 13:58
閱讀 1449·2019-08-29 15:26
閱讀 648·2019-08-26 13:45
閱讀 2145·2019-08-26 11:53
閱讀 1779·2019-08-26 11:30