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

關(guān)于Spring中的@Configuration中的proxyBeanMethods屬性

 更新時(shí)間:2023年07月31日 10:44:17   作者:秋天code  
這篇文章主要介紹了關(guān)于Spring中的@Configuration中的proxyBeanMethods屬性,需要的朋友可以參考下

@Configuration的proxyBeanMethods屬性

@Configuration注解中,有兩個(gè)屬性:

  • value配置Bean名稱
  • proxyBeanMethos,默認(rèn)是true

這個(gè)proxyBeanMethods的默認(rèn)屬性是true。

直接說:當(dāng)@Configuration注解的proxyBeanMeathods屬性是true時(shí),那么此類的Bean就會(huì)被Spring代理,被代理就意味著此類中的方法得到的增強(qiáng)處理。那么此類中通過@Bean來對外提供Bean的方法就會(huì)被增強(qiáng)

我們可以看一下:

這是一個(gè)被@Configuration修飾的類

@Configuration
public class DBConfig {
}

我們獲取一下這個(gè)Bean,打印一下類型

ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
System.out.println(ctx.getBean("DBConfig"));
// com.liumingkai.config.DBConfig$$EnhancerBySpringCGLIB$$ef2610c5@5bfa9431

可以看到,打印出來的類型不是DBConfig,而是被代理后的類型DBConfig$$EnhancerBySpringCGLIB,(可以看到這是CGLib代理出來的類,因?yàn)镴DK動(dòng)態(tài)代理只能處理有接口的類,而CGlib是通過繼承的方式來做代理的)

當(dāng)設(shè)置proxyBeanMethos的屬性是false時(shí),得到的就是此類型,不再是代理類

System.out.println(ctx.getBean("DBConfig"));
// com.liumingkai.config.DBConfig@710726a3

我們知道,被@Bean修飾的方法的返回對象,會(huì)被注冊進(jìn)入Spring的容器中,受Spring的管理

那將@ConfigurationproxyBeanMethods的屬性設(shè)置為true會(huì)有什么好處呢?因?yàn)?code>@Configuration注解通常用來修飾配置類,會(huì)在此類中配置大量的配置項(xiàng)或者用來對外提供Bean

該配置類中通過@Bean來對外提供Bean的方法會(huì)被增強(qiáng),每次都會(huì)返回Spring容器管理的Bean

演示一下

例如:在@Configuration修飾的類,在此類中有一個(gè)被@Bean修飾的方法,用來對外提供Bean。

我們獲取到此類型的Bean后,可以像普通方法一樣來調(diào)用這個(gè)被@Bean修飾的方法,會(huì)得到返回的對象。

區(qū)別在于:

  • 當(dāng)proxyBeanMethods屬性為true時(shí),此類被代理,方法得到增強(qiáng),那么我們每次通過此類型的Bean來調(diào)用@Bean修飾的方法,每次返回的都是Spring容器中的單例Bean
  • 當(dāng)proxyBeanMethods屬性是false時(shí),此類型的Bean就是一個(gè)普通的Bean,未被代理,那么每次調(diào)用@Bean修飾的方法,這都是一個(gè)普通的方法,返回的都是新的普通的對象,不是被Spring容器管理的對象

測試

例如;

先來看,當(dāng)proxyBeanMethods為false時(shí)

@Configuration(proxyBeanMethods = false)
public class DBConfig {
    @Bean
    public DruidDataSource getDruidDataSource() {
        return new DruidDataSource();
    }
}

測試

ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
// 獲取此類型的Bean,查看類型
DBConfig dbConfig = ctx.getBean("DBConfig", DBConfig.class);
// 查看類型
System.out.println(dbConfig);
// com.liumingkai.config.DBConfig@f2ff811
// 就是普通的類型,未被代理
// 調(diào)用此Bean上被@Bean修飾的方法
System.out.println(dbConfig.getDruidDataSource() == dbConfig.getDruidDataSource());
// false 證明此方法就是普通的方法,每次都會(huì)創(chuàng)建一個(gè)對象

再來看proxyBeanMethods為true的情況

@Configuration
public class DBConfig {
    @Bean
    public DruidDataSource getDruidDataSource() {
        return new DruidDataSource();
    }
}

測試

ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
// 獲取此類型的Bean,查看類型
DBConfig dbConfig = ctx.getBean("DBConfig", DBConfig.class);
// 查看類型
System.out.println(dbConfig);
// com.liumingkai.config.DBConfig$$EnhancerBySpringCGLIB$$ef2610c5@5bfa9431
// 可以看到這是一個(gè)被代理后的類,不再是原先的類型了
// 調(diào)用此Bean上被@Bean修飾的方法
// 此方法是被增強(qiáng)后的,每次都會(huì)返回Spring容器中的單例Bean
System.out.println(dbConfig.getDruidDataSource() == dbConfig.getDruidDataSource());
// true 證明此方法返回的是Spring容器中的單例Bean

總結(jié)

@Configuration修飾的類,本質(zhì)上也是一個(gè)Bean

  • 當(dāng)@Configuration中的proxyBeanMethods屬性默認(rèn)是true,意味著這個(gè)類會(huì)被代理,這個(gè)類中通過@Bean修飾的方法會(huì)被增強(qiáng),調(diào)用這個(gè)方法時(shí),會(huì)直接返回受Spring容器管理的Bean(Spring容器中的Bean默認(rèn)都是單例的)
  • 而如果@Configuration中的proxyBeanMethods屬性是false,那么此配置類就是一個(gè)普通的類,未被代理。因此調(diào)用被@Bean修飾的方法,就是一個(gè)普通的方法,每次調(diào)用都會(huì)返回一個(gè)新的對象

到此這篇關(guān)于關(guān)于Spring中的@Configuration中的proxyBeanMethods屬性的文章就介紹到這了,更多相關(guān)Spring proxyBeanMethods屬性內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java十道入門易踩坑題分析后篇

    Java十道入門易踩坑題分析后篇

    這篇文章總結(jié)分析了Java入門容易碰到的幾點(diǎn)易進(jìn)坑的題目,對于新手小白剛開始學(xué)Java非常有益處,讓你少走避開彎路,感興趣的朋友快來看看吧
    2022-01-01
  • Spring Boot動(dòng)態(tài)加載Jar包與動(dòng)態(tài)配置實(shí)現(xiàn)

    Spring Boot動(dòng)態(tài)加載Jar包與動(dòng)態(tài)配置實(shí)現(xiàn)

    隨著項(xiàng)目的不斷演進(jìn)和業(yè)務(wù)需求的增長,很多場景下需要實(shí)現(xiàn)系統(tǒng)的動(dòng)態(tài)性和靈活性,本文主要介紹了Spring Boot動(dòng)態(tài)加載Jar包與動(dòng)態(tài)配置實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • Spring boot事件監(jiān)聽實(shí)現(xiàn)過程解析

    Spring boot事件監(jiān)聽實(shí)現(xiàn)過程解析

    這篇文章主要介紹了,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Hibernate管理Session和批量操作分析

    Hibernate管理Session和批量操作分析

    這篇文章主要介紹了Hibernate管理Session和批量操作的技巧,包括Hibernate管理Session、批量處理數(shù)據(jù)等的常用技巧及注意事項(xiàng),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-12-12
  • java中的JsonSerializer用法,前后端單位轉(zhuǎn)換必備

    java中的JsonSerializer用法,前后端單位轉(zhuǎn)換必備

    這篇文章主要介紹了java中的JsonSerializer用法,前后端單位轉(zhuǎn)換必備!具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • java實(shí)現(xiàn)利用String類的簡單方法讀取xml文件中某個(gè)標(biāo)簽中的內(nèi)容

    java實(shí)現(xiàn)利用String類的簡單方法讀取xml文件中某個(gè)標(biāo)簽中的內(nèi)容

    下面小編就為大家?guī)硪黄猨ava實(shí)現(xiàn)利用String類的簡單方法讀取xml文件中某個(gè)標(biāo)簽中的內(nèi)容。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12
  • JAVA中while循環(huán)的使用與注意事項(xiàng)

    JAVA中while循環(huán)的使用與注意事項(xiàng)

    這篇文章主要介紹了while循環(huán)在編程中的應(yīng)用,包括其基本結(jié)構(gòu)、語句示例、適用場景以及注意事項(xiàng),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-01-01
  • SpringBoot之使用枚舉參數(shù)案例詳解

    SpringBoot之使用枚舉參數(shù)案例詳解

    這篇文章主要介紹了SpringBoot之使用枚舉參數(shù)案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Java中不得不知的Collection接口與Iterator迭代器

    Java中不得不知的Collection接口與Iterator迭代器

    這篇文章主要介紹了Java中的Collection接口與Iterator迭代器,文中有詳細(xì)的代碼示例供大家參考,對我們的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-06-06
  • 在SpringBoot中使用ResponseBodyAdvice自定義響應(yīng)的代碼實(shí)現(xiàn)

    在SpringBoot中使用ResponseBodyAdvice自定義響應(yīng)的代碼實(shí)現(xiàn)

    ResponseBodyAdvice是Spring Framework中的一個(gè)接口,允許您在將響應(yīng)寫入客戶端之前自定義響應(yīng),它通常與@ControllerAdvice注釋結(jié)合使用,以跨多個(gè)控制器將全局更改應(yīng)用于響應(yīng)主體,本文介紹了如何使用ResponseBodyAdvice的基本概述,需要的朋友可以參考下
    2024-12-12

最新評論

遂平县| 句容市| 辰溪县| 葫芦岛市| 康乐县| 阿鲁科尔沁旗| 塘沽区| 额济纳旗| 浦江县| 海丰县| 天全县| 搜索| 杭锦旗| 恩施市| 新和县| 苍南县| 富阳市| 红河县| 连南| 公主岭市| 米林县| 诏安县| 江源县| 弥渡县| 车致| 海盐县| 婺源县| 株洲县| 昌江| 望奎县| 青铜峡市| 涪陵区| 阳信县| 沙河市| 安多县| 六安市| 咸宁市| 南涧| 襄汾县| 固原市| 平塘县|