前言

本文主要給大家介紹的是關(guān)于Spring實(shí)現(xiàn)接口動(dòng)態(tài)的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說,來一起看看詳細(xì)的介紹吧。
關(guān)于這個(gè)問題是因?yàn)轭I(lǐng)導(dǎo)最近跟我提了一個(gè)需求,是有關(guān)于實(shí)現(xiàn)類Mybatis的@Select、@Insert注解的功能。其是基于interface層面,不存在任何的接口實(shí)現(xiàn)類。因而在實(shí)現(xiàn)的過程中,首先要解決的是如何動(dòng)態(tài)實(shí)現(xiàn)接口的實(shí)例化。其次是如何將使接口根據(jù)注解實(shí)現(xiàn)相應(yīng)的功能。
聲明
解決方案是基于Mybatis源碼,進(jìn)行二次開發(fā)實(shí)現(xiàn)。
解決方法
我們先來看看Mybatis是如何實(shí)現(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中實(shí)現(xiàn)接口動(dòng)態(tài)的解決方法-創(chuàng)新互聯(lián)
分享鏈接:http://chinadenli.net/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)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容