设为首页 加入收藏

TOP

使用 Spring 实现控制反转和依赖注入(二)
2023-08-26 21:11:11 】 浏览:64
Tags:使用 Spring 赖注入
置的属性同名的bean
  • byType:类似于按名称进行自动装配,仅基于属性的类型。这意味着Spring将查找具有相同类型的属性来设置的bean。如果有多个bean具有该类型,则框架会抛出异常。
  • constructor:基于构造函数参数进行自动装配,意味着Spring将查找具有与构造函数参数相同类型的bean
  • 例如,让我们通过类型创建具有依赖项itemstorebean

    public class AppConfig {
        @Bean
        public Item item() {
            return new ItemImpl1();
        }
    
        @Bean(autowire = Autowire.BY_TYPE)
        public Store store() {
            return new Store();
        }
    }
    
    

    请注意,自Spring 5.1起,autowire属性已弃用。

    我们还可以使用@Autowired注释按类型注入bean

    public class Store {
    
        @Autowired
        private Item item;
    }
    
    

    如果存在相同类型的多个bean,则可以使用@Qualifier注释按名称引用bean

    public class Store {
    
        @Autowired
        @Qualifier("item1")
        private Item item;
    }
    
    

    现在,让我们通过XML配置按类型自动装配bean

    <bean id="store" class="org.baeldung.store.Store" autowire="byType"> </bean>
    
    

    接下来,让我们通过XML按名称将名为itembean注入到storebeanitem属性中:

    <bean id="item" class="org.baeldung.store.ItemImpl1" />
    
    <bean id="store" class="org.baeldung.store.Store" autowire="byName">
    </bean>
    
    

    我们还可以通过构造函数参数或setter显式定义依赖关系来覆盖自动装配。

    惰性初始化的bean

    默认情况下,容器在初始化期间创建和配置所有单例bean。为了避免这种情况,我们可以在bean配置上使用值为truelazy-init属性:

    <bean id="item1" class="org.baeldung.store.ItemImpl1" lazy-init="true" />
    
    

    因此,只有在第一次请求它时,才会初始化item1bean,而不是在启动时。这样做的优点是初始化时间更快,但缺点是我们在bean被请求之后才会发现任何配置错误,这可能是应用程序已运行数小时甚至数天之后。

    结论

    在本文中,我们介绍了控制反转和依赖注入的概念,并在Spring框架中进行了示例。

    最后

    为了方便其他设备和平台的小伙伴观看往期文章,链接奉上:

    公众号搜索Let us Coding知乎开源中国CSDN思否掘金InfoQ简书博客园慕课51CTOhelloworld腾讯开发者社区阿里开发者社区

    看完如果觉得有帮助,欢迎点赞、收藏关注

    首页 上一页 1 2 下一页 尾页 2/2/2
    】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
    上一篇hibernate 一对一 一对多 多对多 下一篇基本环境准备(第一节)

    最新文章

    热门文章

    Hot 文章

    Python

    C 语言

    C++基础

    大数据基础

    linux编程基础

    C/C++面试题目