Spring依赖注入(DI配置)

简介: Spring依赖注入(DI配置)

1. 依赖注入方式【重点】


问题导入


依赖注入有几种方式?


1.1 依赖注入的两种方式


setter注入

简单类型

引用类型(很常用)

构造器注入

简单类型

引用类型


1.2 setter方式注入


问题导入

setter方式注入使用什么子标签?


引用类型


0824898018a4b205a8ff6cd2152e6bc2_cc7fb746cae9199dcf19a4f0b43ad686.png


简单类型


ebc01387113fdd2e56e682aaa6d281cc_4243a5bd6e08376815eb843ba8254b31.png


1.3 构造方式注入


问题导入

构造方式注入使用什么子标签?


引用类型


49c8bd1ad344c8a8fba4f0f4bc053508_db7e4fe53aa04dd56c02a7e4ea84e200.png


简单类型


f7971732974dcea285f6b9541fd0543d_eaddcba81626524c22742a959f2f6937.png


参数适配【了解】


48c9e1eccc046b8e26e466e7c278c228_d4f18f75034fbbc2d265ec2fbd6251ca.png


1.4 依赖注入方式选择


强制依赖使用构造器进行,使用setter注入有概率不进行注入导致null对象出现

可选依赖使用setter注入进行,灵活性强

Spring框架倡导使用构造器,第三方框架内部大多数采用构造器注入的形式进行数据初始化,相对严谨

如果有必要可以两者同时使用,使用构造器注入完成强制依赖的注入,使用setter注入完成可选依赖的注入

实际开发过程中还要根据实际情况分析,如果受控对象没有提供setter方法就必须使用构造器注入

自己开发的模块推荐使用setter注入


2. 依赖自动装配【理解】


问题导入

如何配置按照类型自动装配?


2.1 自动装配概念


IoC容器根据bean所依赖的资源在容器中自动查找并注入到bean中的过程称为自动装配

自动装配方式

按类型(常用)

按名称

按构造方法

不启用自动装配


2.2 自动装配类型


依赖自动装配

配置中使用bean标签autowire属性设置自动装配的类型


<bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/>
<bean id="bookService" class="com.itheima.service.impl.BookServiceImpl" autowire="byType"/>


依赖自动装配特征

自动装配用于引用类型依赖注入,不能对简单类型进行操作

使用按类型装配时(byType)必须保障容器中相同类型的bean唯一,推荐使用

使用按名称装配时(byName)必须保障容器中具有指定名称的bean,因变量名与配置耦合,不推荐使用

自动装配优先级低于setter注入与构造器注入,同时出现时自动装配配置失效


3. 集合注入


3.1 注入数组类型数据


<property name="array">
    <array>
        <value>100</value>
        <value>200</value>
        <value>300</value>
    </array>
</property>


3.2 注入List类型数据


<property name="list">
    <list>
        <value>itcast</value>
        <value>itheima</value>
        <value>boxuegu</value>
        <value>chuanzhihui</value>
    </list>
</property>


3.3 注入Set类型数据


<property name="set">
    <set>
        <value>itcast</value>
        <value>itheima</value>
        <value>boxuegu</value>
        <value>boxuegu</value>
    </set>
</property>


3.4 注入Map类型数据


<property name="map">
    <map>
        <entry key="country" value="china"/>
        <entry key="province" value="henan"/>
        <entry key="city" value="kaifeng"/>
    </map>
</property>


3.5 注入Properties类型数据


<property name="properties">
    <props>
        <prop key="country">china</prop>
        <prop key="province">henan</prop>
        <prop key="city">kaifeng</prop>
    </props>
</property>


说明:property标签表示setter方式注入,构造方式注入constructor-arg标签内部也可以写<array>、<list>、<set>、<map>、<props>标

相关文章
|
21天前
|
Java 测试技术 数据库
Spring Boot中的项目属性配置
本节课主要讲解了 Spring Boot 中如何在业务代码中读取相关配置,包括单一配置和多个配置项,在微服务中,这种情况非常常见,往往会有很多其他微服务需要调用,所以封装一个配置类来接收这些配置是个很好的处理方式。除此之外,例如数据库相关的连接参数等等,也可以放到一个配置类中,其他遇到类似的场景,都可以这么处理。最后介绍了开发环境和生产环境配置的快速切换方式,省去了项目部署时,诸多配置信息的修改。
|
3天前
|
运维 Java Nacos
Spring Cloud应用框架:Nacos作为服务注册中心和配置中心
Spring Cloud应用框架:Nacos作为服务注册中心和配置中心
|
16天前
|
设计模式 自然语言处理 Java
简单了解下Spring中的各种Aware接口实现依赖注入
在Spring框架中,Aware接口是一组用于提供特定资源或环境信息的回调接口。这些接口被设计用来允许Bean获取对Spring容器或其他相关资源的引用,并在需要时进行适当的处理。
15 2
|
21天前
|
监控 NoSQL Java
Spring Boot Actuator 使用和常用配置
Spring Boot Actuator 使用和常用配置
36 5
|
22天前
|
Java Spring
spring cloud gateway在使用 zookeeper 注册中心时,配置https 进行服务转发
spring cloud gateway在使用 zookeeper 注册中心时,配置https 进行服务转发
41 3
|
8天前
|
Java Spring
Spring Boot Admin 授权配置
Spring Boot Admin 授权配置
14 0
|
8天前
|
监控 Java Spring
Spring Boot Admin 配置应用
Spring Boot Admin 配置应用
17 0
|
XML 数据格式 Java
Spring_DI_XML_01
欢迎移步博客查看-http://futaosmile.oschina.io/coder957 基于XMl的DI 1.设值注入 2.构造注入 3.p命名空间设值注入 4.
808 0
|
XML 数据格式 Python
Spring_DI_XML_02
欢迎移步博客查看-http://futaosmile.oschina.io/coder957 基于XMl的DI 1.集合属性注入 2.array数组属性注入 3.
872 0
|
XML Java 数据格式
Spring_DI_XML_03
欢迎移步博客查看-http://futaosmile.oschina.io/coder957 基于XMl的DI 匿名Bean 匿名内部Bean 同类抽象Bean 异类抽象Bean 多个配置文件-平行关系 多个配置文件-包含关系 Java中的匿名内部类 匿名Bean 没有id,但是可以通过autowire="byType"找到。
730 0