/**
* 1、配置类里面使用@Bean标注在方法上给容器注入返回值对象
* 2、配置类本身也是组件
* 3、proxyBeanMethods:代理bean的方法
* Full(proxyBeanMethods = true) 全模式,容器中注入的是Configuration类的代理对象
* com.koral.boot.config.MyConfig$$EnhancerBySpringCGLIB$$77d3b0b4@7412ed6b,检查
* 容器中是否已经存在组件 启动相对慢
* Lite(proxyBeanMethods = false) 轻量级模式,容器中注入的是Configuration类
* com.koral.boot.config.MyConfig@1e9469b8,不检查容器是否存在组件 启动快
*
* 可以解决组件依赖的问题
*
*/
@Configuration(proxyBeanMethods = true) //告诉SpringBoot这是一个配置类 == 配置文件
public class MyConfig {
/**
* 外部无论对配置类中的这个组件注册方法调用多少次获取的都是之前注册容器中的单实例对象
* @return
*/
@Bean//给容器中添加组件,以方法名作为组件的id。返回类型就是组件类型。返回的值,就是存在组件中的实例
public User user01(){
User zhangsan = new User("zhangsan", 18);
//proxyBeanMethods = true时,user组件依赖 Pet组件,启动时SpringBoot容器会检查是否已经存在Pet组件
//如果存在就直接取,不存在才创建
zhangsan.setPet(tomcatPet());
return zhangsan;
}
@Bean
public Pet tomcatPet(){
return new Pet("tom");
}
}
第二章 SpringBoot注解 @Configutation
最新推荐文章于 2024-07-24 10:30:56 发布