日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

詳解使用Spring的BeanPostProcessor優雅的實現工廠模式

瀏覽:42日期:2023-08-28 17:45:22

最近學習Spring的源碼,發現一個利器BeanPostProcessor。這個后置處理器可以在bean初始化前后對bean進行操作。我們可以在初始化的時候對自己想要的bean進行緩存,進而實現自己需要處理的邏輯。

背景

當我們需要根據類型調用接口不同實現的時候,我們可以使用工廠模式實現。下面說下博主遇到過的兩次需要使用工廠的場景。

場景一:當有一個模塊,我們需要根據數據庫的類型實現不同的的sql。我們此時需要定義一個接口然后每一種數據庫實現不同的sql。在調用時根據當前的數據庫類型調用對應的實現類。

場景二:我們業務需要對接不同的傳感器設備,但是總體業務邏輯就是獲取數據,發送心跳。每一種設備的數據協議又不一樣。所以需要使用工廠,根據不同的設備調用對應的實現類。

工廠模式

靜態工廠

/** * @Description * @Author Singh * @Date 2020-07-06 21:54 * @Version **/@Servicepublic class HandlerService1 { public <T> void handle(Constant.HandlerType handlerType, T dataDO) { IHandler handler = null; if(handlerType.getType().intValue() == Constant.HandlerType.HANDLE_TYEP_1.getType()){ handler = new Type1Handler(); }else if(handlerType.getType().intValue() == Constant.HandlerType.HANDLE_TYEP_2.getType()){ handler = new Type2Handler(); }else if(handlerType.getType().intValue() == Constant.HandlerType.HANDLE_TYEP_3.getType()){ handler = new Type3Handler(); }else if(handlerType.getType().intValue() == Constant.HandlerType.HANDLE_TYEP_4.getType()){ handler = new Type4Handler(); }else{ throw new RuntimeException('類型錯誤'); } handler.handle(dataDO); }}

動態工廠,通過class實現

/** * @Description * @Author Singh * @Date 2020-07-06 21:54 * @Version **/@Servicepublic class HandlerService2 { public <T,H extends IHandler> void handle(Class<H> clzz, T dataDO) throws IllegalAccessException, InstantiationException { IHandler handler = clzz.newInstance(); handler.handle(dataDO); }}

進入主題

BeanPostProcessor實現相同接口的不同實現bean的工廠

首先定義一個注解,后續用來標示bean的處理類型

@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Componentpublic @interface Handler { @AliasFor(annotation = Component.class) String value() default ''; /** * 業務處理類型 * @return */ Constant.HandlerType handlerType();}

處理類型

/** * @Description * @Author Singh * @Date 2020-07-06 21:25 * @Version **/public class Constant { public enum HandlerType{ HANDLE_TYEP_1(1), HANDLE_TYEP_2(2), HANDLE_TYEP_3(3), HANDLE_TYEP_4(4); private Integer type; HandlerType(Integer type) { this.type = type; } public Integer getType() { return type; } }}

定義接口處理

/** * @Description * @Author Singh * @Date 2020-07-06 21:29 * @Version **/public interface IHandler<T> { void handle(T data);}

BeanPostProcessor實現對bean后置處理。通過注解的類型緩存bean對象。

/** * @Description * @Author Singh * @Date 2020-07-06 21:29 * @Version **/@Servicepublic class HandleService implements BeanPostProcessor { private Map<Integer,IHandler> reportDataHandlerMap = new ConcurrentHashMap<>(); public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { if(bean instanceof IHandler){ Handler[] reportHandlers = bean.getClass().getAnnotationsByType(Handler.class); if(reportHandlers == null || reportHandlers.length == 0){return bean; } Handler reportHandler = reportHandlers[0]; reportDataHandlerMap.put(reportHandler.handlerType().getType(), (IHandler) bean); } return bean; } public <T> void handle(Constant.HandlerType handlerType, T dataDO) { IHandler reportDataHandler = reportDataHandlerMap.get(handlerType.getType()); if(reportDataHandler == null){ throw new RuntimeException('類型錯誤'); } reportDataHandler.handle(dataDO); }}

自定義處理器實現,每一種實現一次。

/** * @Description * @Author Singh * @Date 2020-07-06 21:32 * @Version **/@Handler(handlerType = Constant.HandlerType.HANDLE_TYEP_1 )public class Type1Handler implements IHandler<String>{ @Override public void handle(String data) { }}

到此這篇關于詳解使用Spring的BeanPostProcessor優雅的實現工廠模式的文章就介紹到這了,更多相關Spring BeanPostProcessor 工廠模式內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩中文字幕无砖| 午夜在线播放视频欧美| 成人综合一区| 久久国产中文字幕| 久久高清免费观看| 欧美视频久久| 不卡一二三区| 国产一区导航| 欧美日本不卡高清| 五月天av在线| 亚洲深深色噜噜狠狠爱网站| 国产精品一区二区精品| 色天使综合视频| 中文日韩欧美| 国产亚洲人成a在线v网站| 国产在线日韩精品| 国产午夜精品一区二区三区欧美 | 精品日产乱码久久久久久仙踪林| 精品欧美激情在线观看| 色88888久久久久久影院| 欧美午夜精彩| 久久99伊人| 国产亚洲一区二区手机在线观看 | 久久wwww| 亚州av乱码久久精品蜜桃| 亚洲三级观看| 国产精品麻豆久久| 伊人久久大香伊蕉在人线观看热v| 欧美aⅴ一区二区三区视频| 天堂资源在线亚洲| 国产美女视频一区二区| 在线国产一区二区| 欧美国产另类| 亚洲福利专区| 欧美国产三级| 麻豆精品网站| 日韩欧美在线中字| 欧美日韩99| 影音先锋国产精品| 国产精品99在线观看| 日韩中文字幕无砖| 一区在线观看| 在线看片国产福利你懂的| 亚洲三级精品| 亚洲精品小说| 中文字幕在线免费观看视频| 久久国产精品免费一区二区三区| 婷婷综合网站| 精品理论电影在线| 日韩欧乱色一区二区三区在线| 88xx成人免费观看视频库| 欧美天堂一区| 视频一区二区三区中文字幕| 久久精品福利| 国产日韩欧美一区二区三区| 久久av一区| 99视频精品全国免费| 美女视频黄久久| 日韩国产欧美一区二区三区| 99re国产精品| 99久精品视频在线观看视频| 亚洲精品福利| 久久激情一区| 日韩精品福利一区二区三区| 欧美日韩尤物久久| 国产调教一区二区三区| 国精品一区二区三区| 久久爱www.| 亚洲专区视频| 青青久久av| 免费亚洲婷婷| 亚州精品视频| 亚洲黄色在线| 欧美天堂视频| 国产精品日本一区二区不卡视频 | 中文字幕日韩欧美精品高清在线| 精精国产xxxx视频在线野外| 国产精品一区二区av日韩在线| 亚洲男女自偷自拍| 久久久久久色 | 日本va欧美va欧美va精品| 久久一区二区三区喷水| 国产精品久久久久久久久久齐齐 | 国产精品探花在线观看| 人人精品人人爱| 日韩另类视频| 伊人网在线播放| 久久久免费人体| 欧美日韩调教| 亚洲美女91| 免费日韩成人| 中文字幕一区日韩精品| 国产亚洲欧洲| 免费在线看一区| 蜜臀va亚洲va欧美va天堂| 日韩影院免费视频| 视频一区欧美精品| 久久精品不卡| 日韩成人亚洲| 日本а中文在线天堂| 久久免费影院| 在线综合视频| 99热精品久久| 亚洲免费一区二区| 日本亚州欧洲精品不卡| 日韩精品欧美大片| 国产精品大片| 水蜜桃精品av一区二区| 国产一区二区精品久| 黄色在线观看www| 美女精品网站| 亚洲性色视频| 午夜国产精品视频| 亚洲欧洲日本mm| 亚洲高清激情| 日韩亚洲精品在线| 国产一区二区精品| 亚洲一区二区三区无吗| 亚洲精品观看| 日韩av资源网| 国产精品久久久久久久久免费高清| 欧美久久久网站| 日韩精品成人在线观看| 麻豆9191精品国产| 亚洲欧美网站| 中文字幕一区二区三区在线视频| 亚洲精品一二三**| 日本91福利区| 国产成人精品亚洲线观看 | 亚洲精品黄色| 久久99蜜桃| 欧美日韩中文一区二区| 天堂av在线一区| 国产丝袜一区| 成人午夜国产| 亚洲另类av| 国产精品日韩精品在线播放| 黄色在线网站噜噜噜| 尤物精品在线| 国产欧美高清视频在线| 日韩成人综合| 久久亚洲精品伦理| 91综合久久爱com| 久久99免费视频| 激情欧美一区| 青草久久视频| 丝袜美腿一区| 亚洲精品高潮| 四虎国产精品免费观看| 国产亚洲毛片| 久久亚洲黄色| 亚洲电影在线| 日韩国产精品久久久久久亚洲| 精品无人区麻豆乱码久久久| 激情婷婷综合| 国产伦精品一区二区三区视频 | 中文精品电影| 精品资源在线| 日韩视频一区| 欧美国产极品| 免费av一区二区三区四区| 免费观看在线综合| 国产伦精品一区二区三区视频| 日韩av有码| 色偷偷色偷偷色偷偷在线视频| 噜噜噜久久亚洲精品国产品小说| 一本综合精品| 黄色在线观看www| 日韩久久99| 肉色欧美久久久久久久免费看| 亚洲精品欧洲| 蜜臀av免费一区二区三区| 91精品国产自产观看在线 | 国产精品嫩草99av在线| 日韩福利在线观看| 97欧美在线视频| 国产农村妇女精品一二区| 国产一卡不卡| 国产精品久久久久蜜臀| 日韩1区2区3区| 国产99亚洲| 麻豆91在线播放| 蜜臀久久久久久久| 黄色aa久久| 国产欧美午夜| 老牛影视一区二区三区| 成午夜精品一区二区三区软件| 蜜桃伊人久久| 久久夜夜操妹子| 国产精品久久久久av蜜臀| 蜜乳av另类精品一区二区| 三上悠亚国产精品一区二区三区| 国产精品一国产精品| 狠狠操综合网| 亚洲涩涩在线| 久久久91麻豆精品国产一区| 亚洲无线观看| 狠狠干综合网| 天堂日韩电影| av免费不卡国产观看|