最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springbean的八種加載方式匯總

 更新時(shí)間:2022年10月12日 10:31:26   作者:桃花雪  
這篇文章主要介紹了springbean的八種加載方式,一種是XML方式聲明bean,使用@Component及其衍生注解@Controller?、@Service、@Repository定義bean,還有其他方法,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下

總結(jié)了一下八種bean的加載方式

1.XML方式聲明bean

不贅述了

2.使用@Component及其衍生注解@Controller 、@Service、@Repository定義bean

@Service
public class BookServiceImpl implements BookService { }

3.ApplicationContex的register方法

public class AppImport {
    
public static void main(String[] args) {
    
AnnotationConfigApplicationContext ctx =
new AnnotationConfigApplicationContext(SpringConfig5.class);

ctx.register(Cat.class);

String[] names = ctx.getBeanDefinitionNames();

for (String name : names) {
System.out.println(name);
}
}
}

4.第三方bean加載方式

@Configuration
@ComponentScan("com.itheima")
public class SpringConfig {
@Bean
public DruidDataSource getDataSource(){
DruidDataSource ds = new DruidDataSource();
return ds; 
}
 }

初始化實(shí)現(xiàn)FactoryBean接口的類(lèi),實(shí)現(xiàn)對(duì)bean加載到容器之前的批處理操作

@Configuration
@ComponentScan("com.itheima")
public class SpringConfig {

@Bean
public DruidDataSource getDataSource(){
DruidDataSource ds = new DruidDataSource();
return ds; } 
}

public class SpringConfig8 {

@Bean
public BookFactoryBean book(){
return new BookFactoryBean();
}

}

5.使用@Import注解

解決無(wú)侵入式加載,降低耦合問(wèn)題

@Import(Dog.class)
public class SpringConfig5 { } 被導(dǎo)入的bean無(wú)需使用注解聲明為bean
public class Dog { }

此形式可以有效的降低源代碼與Spring技術(shù)的耦合度,在spring技術(shù)底層及諸多框架的整合中大量使用

6.ImportSelector接口

在import的基礎(chǔ)上解決業(yè)務(wù)判斷問(wèn)題

導(dǎo)入實(shí)現(xiàn)了ImportSelector接口的類(lèi),實(shí)現(xiàn)對(duì)導(dǎo)入源的編程式處理解決根據(jù)邏輯業(yè)務(wù)加載bean的問(wèn)題

public class MyImportSelector implements ImportSelector {
public String[] selectImports(AnnotationMetadata metadata) {

boolean flag = metadata.hasAnnotation("org.springframework.context.annotation.Import");//判斷SpringConfig5的元數(shù)據(jù)有哪些特征。有沒(méi)有import注解


if(flag){
return new String[]{"com.itheima.domain.Dog"};
}
return new String[]{"com.itheima.domain.Cat"};
}

}
@Import(MyImportSelector.class)
public class SpringConfig5 { } 

7.ImportBeanDefinitionRegistrar接口

//在importselect基礎(chǔ)上達(dá)到覆蓋已有相同名稱(chēng)bean的目的

導(dǎo)入實(shí)現(xiàn)了ImportBeanDefinitionRegistrar接口的類(lèi),通過(guò)BeanDefinition的注冊(cè)器注冊(cè)實(shí)名bean,實(shí)現(xiàn)對(duì)
容器中bean的裁定,例如對(duì)現(xiàn)有bean的覆蓋,進(jìn)而達(dá)成不修改源代碼的情況下更換實(shí)現(xiàn)的效果。

public class MyRegistrar implements ImportBeanDefinitionRegistrar {
@Override    
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata,
BeanDefinitionRegistry registry) {

//AnnotationMetadata 同importselect方式判斷元數(shù)據(jù)

BeanDefinition beanDefinition = BeanDefinitionBuilder
.rootBeanDefinition(BookServiceImpl2.class) .getBeanDefinition();
registry.registerBeanDefinition("bookService", beanDefinition);
}
//

}
@Import(MyRegistrar.class)
public class SpringConfig6 { } 

8.BeanDefinitionRegistryPostProcessor接口

//在第七種的基礎(chǔ)上解決相同名稱(chēng)bean過(guò)多,相互覆蓋。誰(shuí)優(yōu)先級(jí)高的問(wèn)題

導(dǎo)入實(shí)現(xiàn)了BeanDefinitionRegistryPostProcessor接口的類(lèi),通過(guò)BeanDefinition的注冊(cè)器注冊(cè)實(shí)名bean,
實(shí)現(xiàn)對(duì)容器中bean的最終裁定

public class MyPostProcessor implements BeanDefinitionRegistryPostProcessor {

@Override
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) {
BeanDefinition beanDefinition = BeanDefinitionBuilder
.rootBeanDefinition(BookServiceImpl4.class) .getBeanDefinition();
registry.registerBeanDefinition("bookService", beanDefinition);
}

}
@Import({BookServiceImpl1.class, MyPostProcessor.class, MyRegistrar2.class, MyRegistrar.class})
public class SpringConfig8 {
}

如果BookServiceImpl1.class, MyPostProcessor.class, MyRegistrar.class, MyRegistrar.class中bean的名稱(chēng)相同MyPostProcessor.class的優(yōu)先級(jí)最高

到此這篇關(guān)于springbean的八種加載方式的文章就介紹到這了,更多相關(guān)springbean加載方式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring?Boot?Jwts?Token生成方法示例

    Spring?Boot?Jwts?Token生成方法示例

    這篇文章主要為大家介紹了Spring?Boot?Jwts?Token生成方法示例,非適合java初學(xué)者,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Java數(shù)據(jù)結(jié)構(gòu)中的HashMap和HashSet詳解

    Java數(shù)據(jù)結(jié)構(gòu)中的HashMap和HashSet詳解

    HashMap和HashSet都是存儲(chǔ)在哈希桶之中,通過(guò)本文我們可以先了解一些哈希桶是什么,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2023-10-10
  • 解讀nextLine().split(“[\\s]“)的意思

    解讀nextLine().split(“[\\s]“)的意思

    這篇文章主要介紹了解讀nextLine().split(“[\\s]“)的意思,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Java泛型之協(xié)變與逆變及extends與super選擇

    Java泛型之協(xié)變與逆變及extends與super選擇

    這篇文章主要介紹了Java泛型之協(xié)變與逆變及extends與super選擇,文章圍繞主題內(nèi)容展開(kāi)詳細(xì)內(nèi)容介紹,需要的小伙伴可以參考一下
    2022-05-05
  • springboot中如何去整合shrio實(shí)例分享

    springboot中如何去整合shrio實(shí)例分享

    這篇文章主要介紹了springboot中如何去整合shrio實(shí)例分享的相關(guān)資料,需要的朋友可以參考下
    2023-08-08
  • 公司一般使用的分布式RPC框架及其原理面試

    公司一般使用的分布式RPC框架及其原理面試

    這篇文章主要為大家介紹了公司一般使用的分布式RPC框架及其原理的面試問(wèn)題解答,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-03-03
  • 深入探究MyBatis插件機(jī)制靈活擴(kuò)展及自定義增強(qiáng)框架能力

    深入探究MyBatis插件機(jī)制靈活擴(kuò)展及自定義增強(qiáng)框架能力

    這篇文章主要介紹了深入探究MyBatis插件機(jī)制靈活擴(kuò)展及自定義增強(qiáng)框架能力
    2024-01-01
  • SpringBoot項(xiàng)目使用內(nèi)置的單機(jī)任務(wù)調(diào)度功能詳解

    SpringBoot項(xiàng)目使用內(nèi)置的單機(jī)任務(wù)調(diào)度功能詳解

    這篇文章主要介紹了SpringBoot項(xiàng)目使用內(nèi)置的單機(jī)任務(wù)調(diào)度功能詳解,SpringBoot框架中提供了2個(gè)注解來(lái)讓開(kāi)發(fā)者快速配置來(lái)實(shí)現(xiàn)單機(jī)定時(shí)任務(wù)調(diào)度的功能,分別是@EnableScheduling和 @Scheduled,需要的朋友可以參考下
    2024-01-01
  • protobuf簡(jiǎn)介及使用流程

    protobuf簡(jiǎn)介及使用流程

    本文介紹了Protocol Buffers(protobuf)的數(shù)據(jù)結(jié)構(gòu)序列化和反序列化框架,包括其特點(diǎn)、使用流程和快速上手,通過(guò)一個(gè)簡(jiǎn)單的通訊錄示例,展示了如何創(chuàng)建.proto文件、添加注釋、編寫(xiě)消息定義、編譯.proto文件以及進(jìn)行序列化和反序列化操作,感興趣的朋友一起看看吧
    2025-02-02
  • 解決SpringBoot jar包中的文件讀取問(wèn)題實(shí)現(xiàn)

    解決SpringBoot jar包中的文件讀取問(wèn)題實(shí)現(xiàn)

    這篇文章主要介紹了解決SpringBoot jar包中的文件讀取問(wèn)題實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08

最新評(píng)論

林甸县| 大足县| 绥芬河市| 开江县| 临洮县| 屏东市| 张北县| 灵石县| 读书| 汉沽区| 友谊县| 出国| 南投县| 昌都县| 洛南县| 苗栗市| 巫溪县| 兴宁市| 河源市| 威海市| 读书| 长顺县| 宜阳县| 诏安县| 三门县| 日土县| 应城市| 肇州县| 潮安县| 准格尔旗| 余庆县| 泗水县| 沿河| 周宁县| 屏东市| 德清县| 增城市| 若羌县| 勃利县| 阳新县| 洛扎县|