@confirguration(proxyBeanMethods = false)的作用,如何选择Full模式和Lite模式

2022-12-31,,

@Configuration(proxyBeanMethods = false) //告诉SpringBoot这是一个配置类 == 配置文件
public class MyConfig {
@Bean //给容器中添加组件。以方法名作为组件的id。返回类型就是组件类型。返回的值,就是组件在容器中的实例
public User user01(){
User zhangsan = new User("zhangsan", 18);
//user组件依赖了Pet组件
zhangsan.setPet(tomcatPet());
return zhangsan;
}

上述代码@Configuration(proxyBeanMethods = true)表示使用代理对象调用方法。SpringBoot总会检查这个组件是否在容器中有,如果有就直接拿,没有再创建。(单例模式
public static void main(String[] args) {
SpringApplication.run(MainApplication.class, args);
User user = bean.user01();
User user1 = bean.user01();
System.out.println(user == user1); 返回为true
}
如果@Configuration(proxyBeanMethods = false) 则会拿到两个不同的对象。
System.out.println(user == user1); 返回为false

两种开发模式


Full:全模式(proxyBeanMethods = true)
  每一次外界调用组件,springboot都会检查容器中是否已经存在该组件,效率低
Lite:轻量级模式(proxyBeanMethods = false)
  优点:springboot不会来检查方法返回的组件在容器中有没有,启动非常快

所以,建议以下两条:
配置类组件之间无依赖管子用Lite模式加速容器启动过程,减少判断
配置类组件之间有依赖关系,方法会被调用得到之前的单实例组件,用Full模式

@confirguration(proxyBeanMethods = false)的作用如何选择Full模式和Lite模式的相关教程结束。

《@confirguration(proxyBeanMethods = false)的作用,如何选择Full模式和Lite模式.doc》

下载本文的Word格式文档,以方便收藏与打印。