詳解Spring中實現(xiàn)接口動態(tài)的解決方法-創(chuàng)新互聯(lián)

前言

成都創(chuàng)新互聯(lián)公司主營平山網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app軟件開發(fā),平山h5重慶小程序開發(fā)公司搭建,平山網(wǎng)站營銷推廣歡迎平山等地區(qū)企業(yè)咨詢

本文主要給大家介紹的是關(guān)于Spring實現(xiàn)接口動態(tài)的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說,來一起看看詳細(xì)的介紹吧。

關(guān)于這個問題是因為領(lǐng)導(dǎo)最近跟我提了一個需求,是有關(guān)于實現(xiàn)類Mybatis的@Select、@Insert注解的功能。其是基于interface層面,不存在任何的接口實現(xiàn)類。因而在實現(xiàn)的過程中,首先要解決的是如何動態(tài)實現(xiàn)接口的實例化。其次是如何將使接口根據(jù)注解實現(xiàn)相應(yīng)的功能。

聲明

解決方案是基于Mybatis源碼,進(jìn)行二次開發(fā)實現(xiàn)。

解決方法

我們先來看看Mybatis是如何實現(xiàn)Dao類的掃描的。

MapperScannerConfigurer.java

public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {
 if (this.processPropertyPlaceHolders) {
  processPropertyPlaceHolders();
 }

 ClassPathMapperScanner scanner = new ClassPathMapperScanner(registry);
 scanner.setAddToConfig(this.addToConfig);
 scanner.setAnnotationClass(this.annotationClass);
 scanner.setMarkerInterface(this.markerInterface);
 scanner.setSqlSessionFactory(this.sqlSessionFactory);
 scanner.setSqlSessionTemplate(this.sqlSessionTemplate);
 scanner.setSqlSessionFactoryBeanName(this.sqlSessionFactoryBeanName);
 scanner.setSqlSessionTemplateBeanName(this.sqlSessionTemplateBeanName);
 scanner.setResourceLoader(this.applicationContext);
 scanner.setBeanNameGenerator(this.nameGenerator);
 scanner.registerFilters();
 scanner.scan(StringUtils.tokenizeToStringArray(this.basePackage, ConfigurableApplicationContext.CONFIG_LOCATION_DELIMITERS));
 }

分享題目:詳解Spring中實現(xiàn)接口動態(tài)的解決方法-創(chuàng)新互聯(lián)
分享鏈接:http://muchs.cn/article42/cdddhc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站小程序開發(fā)、企業(yè)網(wǎng)站制作、服務(wù)器托管商城網(wǎng)站、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)