java類默認是public嗎,Spring-ConfigurationClass類

 2023-10-15 阅读 28 评论 0

摘要:作用:在spring容器中,又叫Model,是不是很奇怪?我也不知道為什么叫Model,我是根據ConfigurationClassBeanDefinitionReader類的loadBeanDefinitions方法,來推測出,spring認為ConfigurationClass實例叫Model的,如果一個

作用:在spring容器中,又叫Model,是不是很奇怪?我也不知道為什么叫Model,我是根據ConfigurationClassBeanDefinitionReader類的loadBeanDefinitions方法,來推測出,spring認為ConfigurationClass實例叫Model的,如果一個bean實例是configuration class(概念在下面),那么這個類就會被封裝成ConfigurationClass(類似spring容器會把所有bean封裝成BeanDefinition的概念一樣),那么封裝成ConfigurationClass又有什么用呢?根據我目前掌握的有限知識,spring的aop就是對ConfigurationClass一頓各種操作,來實現的,更具體的以后在補

時機:在ConfigurationClassPostProcessor類processConfigBeanDefinitions方法中,會循環當前容器中所有的Bean實例,然后使用ConfigurationClassUtils類的checkConfigurationClassCandidate方法挨個判斷是否是configuration class,如果是,則封裝成ConfigurationClass

java類默認是public嗎、什么叫configuration class
1.帶有@Configuration注解的類,那么這個類叫做full configuration(我自己翻譯成完全配置),這是一個configuration class
2.帶有@Component,@ComponentScan,@Import,@ImportResource,@Bean 5個注解中的任一個,那么這個類叫做lite configuration(我自己翻譯成精簡配置),這是一個configuration class

根據以上已知條件,其實我們自己就可以用java.reflect包下的各種反射機制進行判斷,但是spring為我們提供了一個工具類來判斷,這個工具類就是ConfigurationClassUtils類,判斷的方法是checkConfigurationClassCandidate方法

NOTE:在@Bean注解的javadoc中有這么一句話
@Bean methods may also be declared within classes that are notannotated with @Configuration. For example, bean methods may be declaredin a @Component class or even in a plain old class. In such cases,a @Bean method will get processed in a so-called ‘lite’ mode.
@Bean方法也可以在沒有用@Configuration注釋的類中聲明。例如,bean方法可以在@Component類中聲明,甚至可以在普通的舊類中聲明。在這種情況下,@Bean方法將以所謂的“lite”模式處理。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/137066.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息