摘要:最近工作,有些功能在不同的模塊總是會重復(fù)的應(yīng)用,于是想把特定的功能做成一個注解,打成包,放到自己的私服上面。
最近工作,有些功能在不同的模塊總是會重復(fù)的應(yīng)用,于是想把特定的功能做成一個注解,打成jar包,放到自己的maven私服上面。這里做一下記錄(springboot)
一. 自定義注解
建一個注解接口,加上對應(yīng)的注解信息
@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface CrawlerTimed { }
通過攔截器,攔截使用次注解的方法
public class CrawlerInterceptor extends HandlerInterceptorAdapter { private Logger logger = LoggerFactory.getLogger(CrawlerInterceptor.class); /** * 調(diào)用之前 * @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 { //創(chuàng)建攔截器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包
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/69580.html
摘要:軟件項目的管理就會變得簡單很多。比如說的驅(qū)動程序,,在是獲取不到的,就需要手工上傳到里是倉庫組,在里沒有這個概念,是特有的。 什么是Maven Maven是一個采用純Java編寫的開源項目管理工具, Maven采用了一種被稱之為Project Object Model (POM)概念來管理項目,所有的項目配置信息都被定義在一個叫做POM.xml的文件中.. Maven是一款跨平臺的項目...
摘要:的主要思想是約定優(yōu)于配置。強烈建議遵循以上規(guī)范,避免不必要的麻煩。依賴傳遞依賴范圍除了控制,還會對依賴傳遞產(chǎn)生影響。此外還提供了和來進一步管理依賴,分別稱為可選依賴和排除依賴。 showImg(https://segmentfault.com/img/remote/1460000012363876?w=1240&h=698); Maven 是跨平臺的項目管理工具,主要服務(wù)于基于Java...
摘要:持續(xù)集成正是針對這一類問題的一種軟件開發(fā)實踐。持續(xù)集成的原則業(yè)界普遍認同的持續(xù)集成的原則包括需要版本控制軟件保障團隊成員提交的代碼不會導(dǎo)致集成失敗。 第一集 hudson+gradle+git+maven(非必選)持續(xù)集成編譯,打包,發(fā)布到倉庫集成 前言 什么是持續(xù)集成 隨著軟件開發(fā)復(fù)雜度的不斷提高,團隊開發(fā)成員間如何更好地協(xié)同工作以確保軟件開發(fā)的質(zhì)量已經(jīng)慢慢成為開發(fā)過程中不可回避的...
閱讀 3072·2021-10-11 10:58
閱讀 1989·2021-09-24 09:47
閱讀 503·2019-08-30 14:19
閱讀 1684·2019-08-30 13:58
閱讀 1444·2019-08-29 15:26
閱讀 641·2019-08-26 13:45
閱讀 2139·2019-08-26 11:53
閱讀 1772·2019-08-26 11:30