摘要:最近工作,有些功能在不同的模塊總是會(huì)重復(fù)的應(yīng)用,于是想把特定的功能做成一個(gè)注解,打成包,放到自己的私服上面。
最近工作,有些功能在不同的模塊總是會(huì)重復(fù)的應(yīng)用,于是想把特定的功能做成一個(gè)注解,打成jar包,放到自己的maven私服上面。這里做一下記錄(springboot)
一. 自定義注解
建一個(gè)注解接口,加上對(duì)應(yīng)的注解信息
@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface CrawlerTimed { }
通過(guò)攔截器,攔截使用次注解的方法
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); //判斷當(dāng)前注解是否存在 if(crawlerTimed != null){ long millis = System.currentTimeMillis(); request.setAttribute("startTime",millis); logger.info("進(jìn)入方法:"+method.getName()+" 的時(shí)間是:"+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); //如果存在這個(gè)注解 if(crawlerTimed!=null){ long endTime = System.currentTimeMillis(); Long startTime =(Long) request.getAttribute("startTime"); long periodTime = endTime - startTime; logger.info("離開(kāi)方法:"+method.getName()+" 的時(shí)間是:"+endTime); logger.info("方法:"+method.getName()+" 總計(jì)耗時(shí):"+periodTime +"ms"); } } }
3 注冊(cè)此攔截器,不然不會(huì)被spring管理
/** * 注冊(cè)自定義的攔截器 */ @Configuration public class InterceptorRegister extends WebMvcConfigurerAdapter { //創(chuàng)建攔截器bean @Bean public CrawlerInterceptor crawlerInterceptor(){ return new CrawlerInterceptor(); } //蔣攔截器bean注冊(cè)到spring @Override public void addInterceptors(InterceptorRegistry registry){ registry.addInterceptor(crawlerInterceptor()); } }
4.resources/META-INF/spring.factories文件
若沒(méi)有,則新建此文件
org.springframework.boot.autoconfigure.EnableAutoConfiguration=cn.iamcrawler.www.crawler_annotation.config.InterceptorRegister
5.打jar包
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/69580.html
摘要:軟件項(xiàng)目的管理就會(huì)變得簡(jiǎn)單很多。比如說(shuō)的驅(qū)動(dòng)程序,,在是獲取不到的,就需要手工上傳到里是倉(cāng)庫(kù)組,在里沒(méi)有這個(gè)概念,是特有的。 什么是Maven Maven是一個(gè)采用純Java編寫的開(kāi)源項(xiàng)目管理工具, Maven采用了一種被稱之為Project Object Model (POM)概念來(lái)管理項(xiàng)目,所有的項(xiàng)目配置信息都被定義在一個(gè)叫做POM.xml的文件中.. Maven是一款跨平臺(tái)的項(xiàng)目...
摘要:的主要思想是約定優(yōu)于配置。強(qiáng)烈建議遵循以上規(guī)范,避免不必要的麻煩。依賴傳遞依賴范圍除了控制,還會(huì)對(duì)依賴傳遞產(chǎn)生影響。此外還提供了和來(lái)進(jìn)一步管理依賴,分別稱為可選依賴和排除依賴。 showImg(https://segmentfault.com/img/remote/1460000012363876?w=1240&h=698); Maven 是跨平臺(tái)的項(xiàng)目管理工具,主要服務(wù)于基于Java...
摘要:持續(xù)集成正是針對(duì)這一類問(wèn)題的一種軟件開(kāi)發(fā)實(shí)踐。持續(xù)集成的原則業(yè)界普遍認(rèn)同的持續(xù)集成的原則包括需要版本控制軟件保障團(tuán)隊(duì)成員提交的代碼不會(huì)導(dǎo)致集成失敗。 第一集 hudson+gradle+git+maven(非必選)持續(xù)集成編譯,打包,發(fā)布到倉(cāng)庫(kù)集成 前言 什么是持續(xù)集成 隨著軟件開(kāi)發(fā)復(fù)雜度的不斷提高,團(tuán)隊(duì)開(kāi)發(fā)成員間如何更好地協(xié)同工作以確保軟件開(kāi)發(fā)的質(zhì)量已經(jīng)慢慢成為開(kāi)發(fā)過(guò)程中不可回避的...
閱讀 3608·2021-10-11 10:58
閱讀 2094·2021-09-24 09:47
閱讀 573·2019-08-30 14:19
閱讀 1858·2019-08-30 13:58
閱讀 1508·2019-08-29 15:26
閱讀 689·2019-08-26 13:45
閱讀 2206·2019-08-26 11:53
閱讀 1832·2019-08-26 11:30