栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

@Configuration(proxyBeanMethods = true)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

@Configuration(proxyBeanMethods = true)

本文简要总结下SpringBoot配置类使用的注解@Configuration的属性proxyBeanMethods属性的作用

(2) 给IOC容器中导入组件有如下几种方式:

    

(2)首先,明确的一点是,使用了@Configuration注解的配置类的目的是给IOC容器中添加组件,在配置类中使用@Bean注解标注在方法上:

Configuration(proxyBeanMethods = true) //告诉SpringBoot这是一个配置类 == 配置文件
public class MyConfig {

    

    @Bean //给容器中添加组件。以方法名作为组件的id。返回类型就是组件类型。返回的值,就是组件在容器中的实例
    public User user01(){
        User user = new User("zhangSan", 18);
        //user组件依赖了Pet组件
        user.setPet(tomcatPet());
        return user;
    }

    @Bean("tom")
    public Pet tomcatPet(){
        return new Pet("tomcat");
    }

}

(3)要研究的问题是:@Configuration注解的proxyBeanMethods属性取值true和false的区别:

  • 【Full模式】当proxyBeanMethods=true时,外部无论对配置类中的这个组件注册方法调用多少次获取的都是之前注册容器中的单实例对象,也就是说,保证每个@Bean方法被调用多少次返回的组件都是单例的,所以如果proxyBeanMethods=true时,每次从外部调用@Bean方法时,都会进行判断操作,判断容器中是否有这个组件,会比较耗时,也即Full模式
  • 【Lite模式】当proxyBeanMethods=false时,每个@Bean方法被调用多少次返回的组件都是新创建的,即,当从外部调用@Bean方法时,不会去判断容器中是否有这个组件,而是直接新创建一个组件然后返回,比Full模式效率高。
  • 总结就是:如果配置类中的组件有依赖关系,则应该使用Full模式,即【proxyBeanMethods=true】,否则应该使用Lite模式,即【proxyBeanMethods=false】
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/855206.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号