精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Configuration源碼,你了解多少?

開發 前端
@Configuration(proxyBeanMethods = false)的配置其實是Lite模式,這種模式下,配置類不會生成代理類,速度會更快,但是要注意,在配置類中的@Bean方法,不能用來實現單例級別的依賴。

Configuration

最近看源碼時,經常看了下@Configuration(proxyBeanMethods = false)這樣的配置,但從命名上看應該是與代理有關的,于是抽個時間了解了下

proxyBeanMethods

首先這個是@Configuration注解中的一個參數,我們都知道,@Configuration是Spring中的配置類,一般用來申明Bean,在默認情況下proxyBeanMethods為true

含義

從源碼中可以看到對該參數的描述如下:

Specify whether @Bean methods should get proxied in order to enforce bean lifecycle behavior, e.g. to return shared singleton bean instances even in case of direct @Bean method calls in user code. This feature requires method interception, implemented through a runtime-generated CGLIB subclass which comes with limitations such as the configuration class and its methods not being allowed to declare final.
The default is true, allowing for 'inter-bean references' via direct method calls within the configuration class as well as for external calls to this configuration's @Bean methods, e.g. from another configuration class. If this is not needed since each of this particular configuration's @Bean methods is self-contained and designed as a plain factory method for container use, switch this flag to false in order to avoid CGLIB subclass processing.
Turning off bean method interception effectively processes @Bean methods individually like when declared on non-@Configuration classes, a.k.a. "@Bean Lite Mode" (see @Bean's javadoc). It is therefore behaviorally equivalent to removing the @Configuration stereotype.
  1. 該屬性的作用是指定標注了@Bean的方法在執行生命周期的時候是否應該被代理。比如在代碼中直接調用@Bean標注的方法時要返回共享的單例Bean實例(關閉代理之后不會返回共享的Bean實例)。
  2. 該特性是通過運行時CGLIB子類 實現的方法攔截。該子類有一些限制,比如配置類和它的方法不允許聲明為final類型。
  3. 默認為true,即允許 “inter-bean references” 通過配置類內部的直接方法調用,也可以通過外部調用該配置類的@Bean標注的方法。如果該配置類是一個特殊的配置類:每一個@Bean標注的方法 都是自包含的,并設計為供容器使用的普通工廠方法,可以設置該屬性為false,以避免CGLIB子類處理。
  4. 關閉Bean方法攔截可以高效的單獨處理@Bean方法,就像聲明在一個non-@Configuration類上一樣,@Bean Lite Mode。這種行為類似于刪除@Configuration原型。

當直接在Configuration中直接通過方法,實現實例件的屬性依賴時,IDEA會有這樣一段提示:

Method annotated with @Bean is called directly in a @Configuration where proxyBeanMethods set to false. Set proxyBeanMethods to true or use dependency injection.

示例

先通過下面的示例看下現象:

兩個配置類,寫法差不多,區別在與proxyBeanMethods的配置以及AnimalCage屬性的注入方法。

@Configuration(proxyBeanMethods = false)
public class GenericConfiguration {
    
    @Bean
    public DogCage dogCage(){
        return new DogCage();
    }

    @Bean
    public AnimalCage animalEden(){
        AnimalCage animalCage = new AnimalCage();
        animalCage.addCage(dogCage());
        return animalCage;
    }
}

@Configuration(proxyBeanMethods = true)
public class ProxyConfiguration {

    @Bean
    public DogCage dogCage(){
        return new DogCage();
    }

    @Bean
    public AnimalCage animalEden(@Autowired List<Cage> cages){
        return new AnimalCage(cages);
    }
}

先看下GenericConfiguration配置的情況:

public class Tests {
    @Autowired
    private BeanFactory beanFactory;
    @Autowired
    private GenericConfiguration genericConfiguration;
    @Autowired
    private AnimalCage animalCage;
    @Autowired
    private DogCage dogCage;
    @Test
    public void runConfig() {
        log.info("configuration: {}", genericConfiguration); // 原始對象類型

        log.info("Configuration中的Bean: {}", genericConfiguration.dogCage() == genericConfiguration.dogCage()); // 兩次結果不一樣
        log.info("容器中的Bnea: {}", beanFactory.getBean(DogCage.class) == beanFactory.getBean(DogCage.class));// 從Spring容器中取值都是一樣的
        animalCage.cages.forEach(cage -> {
            if (cage instanceof DogCage) {
                log.info("dogCage : {} ", cage == dogCage); // 和上面的對象不一致,非單例
            }
        });
    }
}

再看下ProxyConfiguration配置的情況:

public class Tests {
    @Test
    public void runConfig() {
        log.info("configuration: {}", proxyConfiguration); // 1、CGLIB代理的對象

        log.info("Configuration中的Bean: {}", proxyConfiguration.dogCage() == proxyConfiguration.dogCage()); // 2、兩次結果相同
        log.info("容器中的Bnea: {}", beanFactory.getBean(DogCage.class) == beanFactory.getBean(DogCage.class));// 3、從Spring容器中取值都是一樣的
        animalCage.cages.forEach(cage -> {
            if (cage instanceof DogCage) {
                log.info("dogCage : {} ", cage == dogCage); // 和上面的對象不一致,非單例
            }
        });
    }
}

會得到這樣的現象:

  1. proxyBeanMethods = true時,從Spring容器中取出的Configuration是一個Cglib代理配置,否則是一個原始類型配置
  2. proxyBeanMethods = true時,多次調用Bean方法,每次都是一個新對象,否則都是同一個對象
  3. 從Spring容器中取出Bean,不管多少次,都是同一個對象,也就是單例的

Lite Full Mode

看到上面的現象后,我們有必要了解下Spring配置中的Lite和Full兩種模式

lite模式包含:

  • 被@Component修飾的類
  • 通過@ComponentScan掃描的類
  • 通過@Import導入的配置類
  • 通過@ImportResource導入的Spring配置文件
  • 沒有任何Spring相關注解,類里面有@Bean修飾的方法
  • 被@Configuration修飾,但proxyBeanMethods = false

full模式包含:

  • 被@Configuration修飾,且屬性proxyBeanMethods = true(默認)

full模式使用特性:

  • full模式下的配置類會被Cglib代理生成代理類取代原始類型保存到在容器中
  • full模式下的@Bean方法不能是private和final,因為方法會被重寫
  • 單例scope下不同@Bean方法可以互相引用,實現單實例的語義

lite模式使用特性:

  • lite模式下的配置類不生成代理,原始類型進入容器
  • lite模式下的@Bean方法可以是private和final
  • 單例scope下不同@Bean方法引用時無法做到單例,通過@Bean方法生成的對象都是新的實例

結束語

@Configuration(proxyBeanMethods = false)的配置其實是Lite模式,這種模式下,配置類不會生成代理類,速度會更快,但是要注意,在配置類中的@Bean方法,不能用來實現單例級別的依賴。


責任編輯:武曉燕 來源: Java技術指北
相關推薦

2020-03-25 08:47:22

智能邊緣邊緣計算網絡

2021-06-06 18:22:04

PprofGopher邏輯

2012-12-27 10:58:24

KVMKVM概念

2023-10-29 08:35:47

AndroidAOP編程

2024-01-08 08:27:11

注解Bean代理

2022-06-07 07:37:40

線程進程開發

2022-02-08 12:06:12

云計算

2019-08-07 17:18:18

云計算云原生函數

2023-09-07 10:26:50

接口測試自動化測試

2025-01-16 10:41:40

2011-08-23 11:03:35

ATM

2021-12-09 07:47:58

Flink 提交模式

2020-12-10 09:00:00

開發.NET工具

2015-11-09 10:44:37

DevOpsIT運維

2023-08-17 10:12:04

前端整潔架構

2023-12-24 12:56:36

協程

2011-08-10 09:35:38

2017-05-26 18:30:34

華為

2018-04-25 15:53:12

霧計算

2021-08-11 10:00:51

緩存MyBatis管理
點贊
收藏

51CTO技術棧公眾號

国产v综合ⅴ日韩v欧美大片| 精品福利二区三区| 成人手机视频在线| 老熟妇高潮一区二区高清视频| 国产精品高颜值在线观看| 99久久99久久精品免费看蜜桃 | 久99九色视频在线观看| 日韩少妇一区二区| 国产精品麻豆成人av电影艾秋| hitomi一区二区三区精品| 国产成人极品视频| 免费在线黄色片| 欧美日韩国产一区二区三区不卡 | 久久久久久免费看| 欧洲毛片在线| 久久精品免费| 欧美激情视频一区| 91免费在线看片| 成人影院中文字幕| 欧美日韩精品一区二区三区| 亚洲熟妇无码另类久久久| 欧美三级电影一区二区三区| 91一区二区三区在线观看| 91久久精品一区| 无码一区二区三区| 日韩午夜免费| 欧美成人四级hd版| 欧美成人短视频| 女厕嘘嘘一区二区在线播放| 精品少妇一区二区三区免费观看| 免费在线黄网站| 午夜免费福利在线观看| 99国产精品久久| 高清视频一区二区三区| 国产三级在线观看视频| 美腿丝袜亚洲一区| 国产福利精品在线| 欧美精品一二三四区| 亚洲国产午夜| 欧美极品在线视频| 精品99久久久久成人网站免费| 99这里只有精品视频| 欧美人妇做爰xxxⅹ性高电影| 日韩视频一二三| h网站在线免费观看| 久久久久久久久蜜桃| 精品视频一区二区| 手机在线观看免费av| 国产91高潮流白浆在线麻豆 | 亚洲最新在线视频| 粉嫩av懂色av蜜臀av分享| 99久久香蕉| 亚洲国产黄色片| 欧美熟妇精品黑人巨大一二三区| 青青草国产一区二区三区| 欧美在线免费播放| 无遮挡又爽又刺激的视频| 欧洲av不卡| 欧美性大战久久久久久久蜜臀| 欧美在线观看黄| 黄色av免费在线| 亚洲精品成人天堂一二三| 国产免费一区二区三区四在线播放 | 少妇精品无码一区二区免费视频| 久久69成人| 欧美日韩一区中文字幕| 四季av一区二区三区| gogo大尺度成人免费视频| 欧美日韩一级片在线观看| 中日韩av在线播放| 亚洲不卡在线| 亚洲精品国精品久久99热| 欧美一区二区三区成人精品| 自拍偷拍精品| 中文字幕av一区中文字幕天堂| 人妻av一区二区| 黄色免费大全亚洲| 亚洲欧美精品一区二区| 国产又粗又长免费视频| 中文无码久久精品| 97精品国产97久久久久久春色| 国产黄色录像片| 午夜欧美精品久久久久久久| 97视频com| 日韩久久久久久久久久| 国产精品 欧美精品| 99在线免费观看视频| 手机福利在线| 91免费看片在线观看| 亚洲一区二区三区在线观看视频| 三级黄视频在线观看| 欧美国产精品一区二区三区| 国产又大又长又粗又黄| 国产v日韩v欧美v| 欧美日韩精品一二三区| 久久人妻少妇嫩草av无码专区| 亚洲一二三区视频| 精品视频在线播放色网色视频| 国产成人精品一区二区在线小狼| 国产成人亚洲一区二区三区| 日韩精品一区二区在线观看| 魔女鞋交玉足榨精调教| 五月激情久久久| 欧美怡红院视频一区二区三区| 天堂网av手机版| 国内国产精品久久| 欧美日韩高清免费| 伊人福利在线| 欧美三级视频在线| 国产精品久久AV无码| 欧美电影免费观看高清| 欧美一区二粉嫩精品国产一线天| 久久久久久久伊人| 麻豆精品视频在线| 久久国产手机看片| 成人日批视频| 欧美在线制服丝袜| 在线观看日韩精品视频| 激情视频一区二区三区| 91久久中文字幕| 韩国中文字幕2020精品| 激情亚洲一区二区三区四区 | 欧美日韩免费高清| 4438x成人网全国最大| 在线视频你懂得一区二区三区| 国产精品入口免费软件| 国产精品对白久久久久粗| 精品国产欧美一区二区三区成人| 亚洲天堂一级片| 美女视频黄频大全不卡视频在线播放| 国产欧美精品日韩精品| 国产精品久久一区二区三区不卡| 中文av一区二区| 久久精品免费一区二区| 老司机aⅴ在线精品导航| 欧美日韩国产成人高清视频| 国产麻豆免费视频| 国产精品美女久久久久久久久久久 | 91亚色免费| 91cn在线观看| 欧美一二三区精品| 永久免费看黄网站| 久久99精品国产.久久久久| 欧美一区激情视频在线观看| 在线观看的黄色| 日韩av在线直播| 偷偷操不一样的久久| av电影一区二区| 国产女大学生av| 日韩中出av| 秋霞午夜一区二区| 国产一二三在线观看| 欧美自拍偷拍午夜视频| 久久久久久久久福利| 日韩二区三区四区| 婷婷久久伊人| 四虎影视国产精品| 欧美成人国产va精品日本一级| 69国产精品视频免费观看| av电影天堂一区二区在线| 极品美女扒开粉嫩小泬| 欧美人与牛zoz0性行为| 国产精品露脸自拍| 精品176二区| 精品毛片乱码1区2区3区| 日韩 国产 在线| 久久一夜天堂av一区二区三区| 久久精品在线免费视频| 亚洲第一二区| 欧洲成人性视频| 伊人在线视频| 精品久久久影院| 成人毛片在线播放| 国产精品精品国产色婷婷| 亚洲欧美日韩网站| 亚洲美女少妇无套啪啪呻吟| 久久免费一区| 黄色成人小视频| 久久99久久亚洲国产| 日本天堂影院在线视频| 欧美色精品在线视频| 欧美黑人精品一区二区不卡| 99久久综合色| 欧美日韩一区二区三区69堂| 欧美涩涩视频| 日韩精品一区二区三区色偷偷| 国产精品蜜芽在线观看| 国产亚洲精品久久| www.久久久久久| 色综合欧美在线| 欧美日韩在线视频免费| 久久久久国产一区二区三区四区| 国产不卡一区二区视频| 成人免费在线播放| 国产高清在线精品一区二区三区| www.在线视频| 亚洲欧美日本另类| 精品人妻一区二区三区四区不卡| 中文字幕在线一区免费| 黄色在线免费播放| 久久精品理论片| 日本中文字幕亚洲| 日韩精品欧美大片| 91亚洲国产成人精品性色| 蜜桃视频m3u8在线观看| 久久久av电影| 国自产拍在线网站网址视频| 欧美变态tickle挠乳网站| 欧美激情一区二区三区免费观看| 久久久噜噜噜久久中文字幕色伊伊| 少妇av一区二区三区无码| 欧美激情777| 美日韩免费视频| 成人在线tv视频| 亚洲最大av网站| 久久不卡日韩美女| 日本三级久久久| 成人福利电影| 欧美夫妻性生活xx| 香蕉视频在线播放| 亚洲图片在区色| 日韩a在线看| 亚洲第一精品电影| 超碰在线观看av| 欧美精品日韩一本| 国模私拍一区二区| 色婷婷亚洲精品| 国产又大又黄视频| 午夜成人免费电影| 国产大片中文字幕在线观看| 亚洲特级片在线| 免费精品在线视频| 欧美韩日一区二区三区| 中文字幕免费视频| 久久亚洲精华国产精华液| 艳妇乳肉亭妇荡乳av| 粉嫩一区二区三区性色av| 无套白嫩进入乌克兰美女| 蜜乳av一区二区| 国产精品一区二区小说| 日韩激情av在线| 精品久久久久久中文字幕2017| 中文字幕一区二区三区欧美日韩 | 国产视频网站在线| 亚洲精品久久久久久下一站 | 亚洲欧美视频在线| 少妇人妻偷人精品一区二区| 亚洲国产精品悠悠久久琪琪| 午夜精品久久久久久久爽 | 97久久国产精品| 波多野结衣在线观看| 久久免费精品视频| 第一av在线| 97精品一区二区三区| 蜜桃视频www网站在线观看| 欧美洲成人男女午夜视频| 美女写真久久影院| 国产精品一久久香蕉国产线看观看| 高清电影在线免费观看| 久久青草精品视频免费观看| h片精品在线观看| 欧美中文在线观看国产| 精品国模一区二区三区| 国产日韩一区在线| 欧美1区2区3| 精品乱码一区二区三区| 亚洲理论电影| 亚洲一区影院| 黄色成人精品网站| 久久亚洲中文字幕无码| 日本sm残虐另类| 捷克做爰xxxⅹ性视频| 不卡一二三区首页| 97在线观看免费视频| 亚洲三级电影网站| 欧美成人精品欧美一级乱黄| 日本精品一级二级| 国产视频www| 日韩电影在线观看永久视频免费网站| 伊人久久一区二区| 日韩免费高清av| 黄色在线小视频| 九九九热精品免费视频观看网站| av免费观看一区二区| 欧美大奶子在线| 91视频欧美| 国产精品亚洲美女av网站| 综合激情网...| 日本一区免费观看| 欧美黄色一区二区| 日韩精品一区二区三区色欲av| 亚洲国产日韩欧美一区二区三区| 久久精品在线免费视频| 日韩中文字幕一区二区三区| 亚洲天堂伊人网| 2020国产精品自拍| 色婷婷在线视频观看| 色欧美片视频在线观看在线视频| 日本最新中文字幕| 欧美三级视频在线观看| 天堂a√在线| 色综合老司机第九色激情| 国产福利一区二区三区在线播放| 国产精品aaaa| 国内精品免费| 最新av网址在线观看| 日韩中文字幕亚洲一区二区va在线 | 痴汉一区二区三区| 欧美一级精品片在线看| 免费人成自慰网站| 狠狠色丁香婷综合久久| 特级西西www444人体聚色| 午夜影视日本亚洲欧洲精品| 91国内精品视频| 亚洲天天在线日亚洲洲精| h片在线观看视频免费免费| 亚洲自拍偷拍区| 欧美国产美女| 国产精品一区二区羞羞答答| 92国产精品观看| 久久精品国产亚洲av高清色欲| 五月婷婷久久综合| 不卡视频免费在线观看| 成年人精品视频| 91麻豆精品一二三区在线| 日韩免费中文专区| 欧美专区在线| 亚洲av片不卡无码久久| 亚洲成人精品在线观看| 性中国xxx极品hd| 久久五月情影视| 欧美美女福利视频| 亚洲欧洲在线一区| 免费成人av资源网| 久久亚洲无码视频| 欧美在线综合视频| 91高清在线| 国产精品久久久久999| 精品国产91久久久久久浪潮蜜月| 中文字幕一区综合| 久久电影网站中文字幕| 日本视频在线免费| 欧美日韩性生活| 亚洲成人三级| 亚洲影院色在线观看免费| 一区二区电影| 少妇愉情理伦片bd| 一区二区激情小说| 人妻少妇精品无码专区| 国产91成人在在线播放| 色橹橹欧美在线观看视频高清| 好色先生视频污| 精品亚洲porn| 欧美日韩在线观看成人| 亚洲第一国产精品| 黑人巨大精品| 亚洲va久久久噜噜噜久久狠狠| 在线视频观看日韩| 91av在线免费| 欧美性xxxxx极品| 国产1区2区3区在线| 国产免费一区二区三区在线能观看 | jvid一区二区三区| 在线观看精品视频| 国产福利一区二区三区视频在线| 中文字幕网站在线观看| 欧美无砖砖区免费| 国产日产一区二区三区| 精品亚洲欧美日韩| 视频一区免费在线观看| 糖心vlog免费在线观看| 日韩你懂的电影在线观看| 午夜伦理福利在线| 一区二区三区久久网| 国产成人精品综合在线观看| 久草视频一区二区| 精品精品国产国产自在线| 欧美jizz19性欧美| 小泽玛利亚视频在线观看| 一区二区欧美在线观看| 青青国产在线| 91精品综合视频| 99亚洲一区二区| 久久99久久99精品免费看小说| 欧美日韩一卡二卡| www.综合网.com| 欧美日韩精品免费看| 国产在线视视频有精品| 91在线看视频| 久久久精品视频在线观看| 老牛国内精品亚洲成av人片| 亚洲xxx在线观看| 激情久久av一区av二区av三区| 亚洲AV第二区国产精品| 国产欧美日韩免费| 国产亚洲在线观看| 日韩欧美中文字幕视频| 亚洲人成网站777色婷婷| 中文字幕久久精品一区二区| 一级黄色香蕉视频|