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>标

相关文章
|
4月前
|
负载均衡 监控 Java
Spring Cloud Gateway 全解析:路由配置、断言规则与过滤器实战指南
本文详细介绍了 Spring Cloud Gateway 的核心功能与实践配置。首先讲解了网关模块的创建流程,包括依赖引入(gateway、nacos 服务发现、负载均衡)、端口与服务发现配置,以及路由规则的设置(需注意路径前缀重复与优先级 order)。接着深入解析路由断言,涵盖 After、Before、Path 等 12 种内置断言的参数、作用及配置示例,并说明了自定义断言的实现方法。随后重点阐述过滤器机制,区分路由过滤器(如 AddRequestHeader、RewritePath、RequestRateLimiter 等)与全局过滤器的作用范围与配置方式,提
Spring Cloud Gateway 全解析:路由配置、断言规则与过滤器实战指南
|
4月前
|
Java 关系型数据库 MySQL
Spring Boot自动配置:魔法背后的秘密
Spring Boot 自动配置揭秘:只需简单配置即可启动项目,背后依赖“约定大于配置”与条件化装配。核心在于 `@EnableAutoConfiguration` 注解与 `@Conditional` 系列条件判断,通过 `spring.factories` 或 `AutoConfiguration.imports` 加载配置类,实现按需自动装配 Bean。
|
4月前
|
人工智能 Java 开发者
【Spring】原理解析:Spring Boot 自动配置
Spring Boot通过“约定优于配置”的设计理念,自动检测项目依赖并根据这些依赖自动装配相应的Bean,从而解放开发者从繁琐的配置工作中解脱出来,专注于业务逻辑实现。
1529 0
|
3月前
|
前端开发 Java 应用服务中间件
《深入理解Spring》 Spring Boot——约定优于配置的革命者
Spring Boot基于“约定优于配置”理念,通过自动配置、起步依赖、嵌入式容器和Actuator四大特性,简化Spring应用的开发与部署,提升效率,降低门槛,成为现代Java开发的事实标准。
|
4月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
669 5
|
4月前
|
传感器 Java 数据库
探索Spring Boot的@Conditional注解的上下文配置
Spring Boot 的 `@Conditional` 注解可根据不同条件动态控制 Bean 的加载,提升应用的灵活性与可配置性。本文深入解析其用法与优势,并结合实例展示如何通过自定义条件类实现环境适配的智能配置。
218 0
探索Spring Boot的@Conditional注解的上下文配置
|
5月前
|
安全 算法 Java
在Spring Boot中应用Jasypt以加密配置信息。
通过以上步骤,可以在Spring Boot应用中有效地利用Jasypt对配置信息进行加密,这样即使配置文件被泄露,其中的敏感信息也不会直接暴露给攻击者。这是一种在不牺牲操作复杂度的情况下提升应用安全性的简便方法。
1088 10
|
XML 数据格式 Java
Spring_DI_XML_01
欢迎移步博客查看-http://futaosmile.oschina.io/coder957 基于XMl的DI 1.设值注入 2.构造注入 3.p命名空间设值注入 4.
894 0
|
XML 数据格式 Python
Spring_DI_XML_02
欢迎移步博客查看-http://futaosmile.oschina.io/coder957 基于XMl的DI 1.集合属性注入 2.array数组属性注入 3.
964 0
|
XML Java 数据格式
Spring_DI_XML_03
欢迎移步博客查看-http://futaosmile.oschina.io/coder957 基于XMl的DI 匿名Bean 匿名内部Bean 同类抽象Bean 异类抽象Bean 多个配置文件-平行关系 多个配置文件-包含关系 Java中的匿名内部类 匿名Bean 没有id,但是可以通过autowire="byType"找到。
811 0