本文共 2749 字,大约阅读时间需要 9 分钟。
注解的意思是proxyBeanMethods配置类是用来指定@Bean注解标注的方法是否使用代理。
直接看下面列子简单明了@Datapublic class Dog { private String name; private Cat cat;}
@Datapublic class Cat { }
简单创建的springboot工程
@SpringBootApplicationpublic class ProxybeanmethodtestApplication { public static void main(String[] args) { SpringApplication.run(ProxybeanmethodtestApplication.class, args); }}
只使用了lombok依赖,其他都是springboot工程脚手架自带的
4.0.0 com.cch demo 0.0.1-SNAPSHOT com.cch proxybeanmethodtest 0.0.1-SNAPSHOT proxybeanmethodtest Demo project for Spring Boot 1.8 org.springframework.boot spring-boot-starter org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-maven-plugin org.projectlombok lombok
@Configuration(proxyBeanMethods = true)public class PetConfig { @Bean public Dog dog() { Dog dog = new Dog(); dog.setName("狗狗"); dog.setCat(cat()); return dog; } @Bean public Cat cat() { System.out.println("cat调用~~~~喵喵******"); return new Cat(); }}
@Configuration(proxyBeanMethods = false)public class PetConfig { @Bean public Dog dog() { Dog dog = new Dog(); dog.setName("狗狗"); dog.setCat(cat()); return dog; } @Bean public Cat cat() { System.out.println("cat调用~~~~喵喵******"); return new Cat(); }}
proxyBeanMethods配置类是用来指定@Bean注解标注的方法是否使用代理。
1.当设置为true的时候,说明,当配置类中的某个bean需要配置类中其他的bean对象的时候,是去spring 容器拿的,所以被依赖的那个bean只会创建一次,如本篇文章中,当proxyBeanMethods设置为true时,cat对象只会创建一次,因为创建dog的时候,会去spring容器获取。 2.当设置为false的时候,说明当配置类中的某个bean需要配置类中其他bean对象的时候,是立即创建的,而不是去找spring容器获取。如本篇文章中,当proxyBeanMethods设置为false时,cat对象会创建两次,一次是cat交给spring管理的bean,一次是dog bean初始化的时候会去自己创建一个cat对象出来转载地址:http://qkrii.baihongyu.com/