proxyBeanMethods:代理bean方法


配置类里使用@Bean标注在方法上给容器注册组件,默认是单实例的,称为Full模式,也就是说,返回的组件永远相同

@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
        //1.返回IOC容器
        ConfigurableApplicationContext run =
                SpringApplication.run(MainApplication.class, args);

        //2.查看容器里面的组件
        String[] names = run.getBeanDefinitionNames();
        for (String name : names) {
            System.out.println(name);
        }
        //3.从容器中获取组件(通过name)
        Pet tom01 = run.getBean("tom",Pet.class);
        Pet tom02 = run.getBean("tom",Pet.class);
        System.out.println(tom01==tom02); //true,因为组件是单实例的

        // 从容器中获取组件(通过配置类)
        MyConfig beans = run.getBean(MyConfig.class);
        User user = beans.user01();
        User user01 = beans.user01();
        System.out.println(user==user01); //true
    }
}
但是组件是否为单实例可以通过 proxyBeanMethods方法修改
@Configuration(proxyBeanMethods = false)//这样就是多实例了,称为lite模式
一般有组件依赖的时候,我们使用Full模式。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM