当前位置:网站首页>@Detailed introduction of configuration annotation
@Detailed introduction of configuration annotation
2022-07-07 23:44:00 【TPH-BETTER】
from https://www.cnblogs.com/init-qiancheng/p/14623522.html
@Target({
ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Configuration {
@AliasFor(
annotation = Component.class
)
String value() default "";
boolean proxyBeanMethods() default true;
}
According to the definition of this annotation , The annotation is first a component , So it will be @SpringBootApplication Annotation scan ( The premise of scanning is that the annotation must be in the same package or sub package as the startup class ) There is an attribute in this annotation proxyBeanMethods, The default value for this property is true, This attribute can be divided into two modes
- Full Pattern ( Is the default ):proxyBeanMethods = true;
- Lite Pattern :proxyBeanMethods = false;
Full Patterns and Lite The difference between patterns
Use Full Pattern , This configuration class is represented , You can solve the dependencies between components , He will first check whether there are instances of components in the container , If it exists, it will be used directly , If it doesn't exist, it will be created ;
If it is Lite Pattern , There will be no proxy class , Each call will be executed once ,SpringBoot Will skip the steps of searching in the container ;
When to use Full and Lite
When there is no component dependency, it is used Lite, This will make the program start faster ;
When there is component dependency, it is used Full, Is the default ;
MyConfig.java
/** * 1、 The configuration class uses @Bean Label the method to register the component to the container , The default is also single instance * 2、 The configuration class itself is also a component * 3、proxyBeanMethods: agent bean Methods * Full(proxyBeanMethods = true)、【 Make sure that each @Bean Method is called many times and the returned component is single instance 】 * Lite(proxyBeanMethods = false)【 Every @Bean Method is called many times and the returned component is newly created 】 * Component dependencies must use Full Mode default . Other defaults are Lite Pattern */
@Configuration(proxyBeanMethods = false)// tell SpringBoot This is a configuration class == The configuration file
public class MyConfig {
/** * Full: No matter how many times you call the component registration method in the configuration class, you get the single instance object in the previous registration container * * @return */
@Bean// Add components to the container . Using the method name as the name of the component id. The return type is the component type . The value returned , Is an instance of a component in a container
public People people() {
return new People(1, " Transference ", dog());
}
@Bean
public Dog dog() {
return new Dog(1, " Hee hee ");
}
}
Start class
@SpringBootApplication
public class QianchengApplication {
public static void main(String[] args) {
ApplicationContext context = SpringApplication.run(QianchengApplication.class, args);
/** * Use Full Mode will output * [email protected]7aae97b * true */
/** * Use Late Mode output * [email protected] * false */
MyConfig bean = context.getBean(MyConfig.class);
System.out.println(bean);
People people = context.getBean("people", People.class);
Dog dog1 = context.getBean("dog", Dog.class);
System.out.println(people.getDog() == dog1);
}
}
边栏推荐
- Pycharm basic settings latest version 2022
- 【7.4】25. K 个一组翻转链表
- [summary] some panels and videos seen
- Dataguard 主备清理归档设置
- Take you hand in hand to build feign with idea
- Slam interview summary
- [stm32+esp8266 connects to Tencent cloud IOT development platform 3] stm32+esp8266-01s dynamically registers devices on Tencent cloud (at instruction mode) -- with source code
- SLAM面试总结
- 2022 certified surveyors are still at a loss when preparing for the exam? Teach you how to take the exam hand in hand?
- Alibaba cloud MySQL cannot connect
猜你喜欢

Progress broadcast | all 29 shield machines of Guangzhou Metro Line 7 have been launched

受限线性表

Right click the idea file to create new. There is no solution to create new servlet

Extended tree (I) - graphic analysis and C language implementation

Benchmarking Detection Transfer Learning with Vision Transformers(2021-11)

ping报错:未知的名称或服务

HB 5469民用飞机机舱内部非金属材料燃烧试验方法

List. How to achieve ascending and descending sort() 2020.8.6

Open source hardware small project: anxinco esp-c3f control ws2812

0-1 knapsack problem
随机推荐
Dependency injection 2 advantage lifecycle
The for loop realizes 1-100 addition and eliminates the 4-digit tail number
[summary] some panels and videos seen
mysql8.0 ubuntu20.4
MongoDB快速入门
SAP HR 劳动合同信息 0016
codeforces每日5题(均1500)-第八天
数据分析系列 之3σ规则/依据拉依达准则来剔除异常值
保证接口数据安全的10种方案
IDEA 2021.3. X cracking
@Configuration注解的详细介绍
Design and implementation of spark offline development framework
ASP. Net core middleware request processing pipeline
B_ QuRT_ User_ Guide(39)
Oracle statistics by time
二叉排序树【BST】——创建、查找、删除、输出
Understand TCP's three handshakes and four waves with love
archery安装测试
[stm32+esp8266 connect Tencent cloud IOT development platform 2] stm32+esp8266-01s connect Tencent cloud
平衡二叉樹【AVL樹】——插入、删除