当前位置: 首页 > news >正文

依赖注入方式、依赖自动装配

Setter注入

引用类型

在bean中定义引用类型属性并提供可访问的set方法

配置中使用property标签ref属性注入引用类型对象

简单类型

在bean中定义引用类型属性并提供可访问的set方法

配置中使用property标签value属性注入简单类型数据

构造器注入

引用类型(了解)

在bean中定义引用类型属性并提供可访问的构造方法

配置中使用constructor-arg标签ref属性注入引用类型对象

参数适配(了解)

配置中使用constructor-arg标签type属性设置按形参类型注入

配置中使用constructor-arg标签index属性设置按形参位置注入

依赖注入方式选择

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

 (强制依赖:这个ben运行必须需要的东西用构造器注入,因为构造器一旦指定了,你这个参数必须给,你不会忘,忘了的话对象无法造,配置文件也报错)
2可选依赖使用setter注入进行,灵活性强

  (可注可不注的东西使用setter注入)
3.Spring框架倡导使用构造器,第三方框架内部大多数采用构造器注入的形式进行数据初始化,相对严谨

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

5.实际开发过程中还要根据实际情况分析,如果受控对象没有提供setter方法就必须使用构造器注入
6.自己开发的模块推荐使用setter注入

 什么是自动装配

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

自动装配的方式

   按类型(常用)

   按名称

   按构造方法

   不启用自动装配


依赖自动装配

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

特征

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

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

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

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

集合注入

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl">
        <!--数组注入-->
        <property name="array">
            <array>
                <value>100</value>
                <value>200</value>
                <value>300</value>
            </array>
        </property>
        <!--list集合注入-->
        <property name="list">
            <list>
                <value>itcast</value>
                <value>itheima</value>
                <value>boxuegu</value>
                <value>chuanzhihui</value>
            </list>
        </property>
        <!--set集合注入-->
        <property name="set">
            <set>
                <value>itcast</value>
                <value>itheima</value>
                <value>boxuegu</value>
                <value>boxuegu</value>
            </set>
        </property>
        <!--map集合注入-->
        <property name="map">
            <map>
                <entry key="country" value="china"/>
                <entry key="province" value="henan"/>
                <entry key="city" value="kaifeng"/>
            </map>
        </property>
        <!--Properties注入-->
        <property name="properties">
            <props>
                <prop key="country">china</prop>
                <prop key="province">henan</prop>
                <prop key="city">kaifeng</prop>
            </props>
        </property>
    </bean>
</beans>

注意:array和list互相能够使用,大部分注入的都是简单类型

加载properties文件

开启context命名空间

使用context命名空间,加载指定properties文件

使用${}读取加载的属性值


不加载系统属性

加载多个properties文件

加载所有properties文件

加载properties文件标准格式

从类路径或jar包中搜索并加载properties文件

相关文章:

  • 从点灯开始的51单片机生活
  • Qt 信号与槽
  • TensorFlow Lite + OpenCV:在树莓派上实现实时图像识别
  • 网络空间安全(33)MSF漏洞利用
  • 探索天然分子swertiamarin调控脂肪生成的新机制
  • Linux文件管理练习
  • 高并发场景下的淘宝API优化:如何设计商品数据采集系统?
  • EDID读取学习
  • 数字内容体验驱动品牌忠诚跃升
  • [Windows] 轻量级景好鼠标录制器 v2.1 单文件版,支持轨迹+鼠标键盘录制复刻
  • 解决 Linux 系统中 root 用户无法打开图形界面问题
  • 【SpringMVC】常用注解:@ModelAttribute
  • java手机号、邮箱、日期正则表达式
  • 【一起来学kubernetes】12、k8s中的Endpoint详解
  • 2024年12月CCF-GESP编程能力等级认证C++编程四级真题解析
  • 【FPGA实战】Verilog实现DE2-115的流水灯控制
  • 自动化测试-网页聊天室
  • 模型评估——acc、P、R、F值、交叉验证、K折交叉验证
  • 方差,协方差及协方差矩阵的计算
  • 二分+前缀和/滑动窗口——成绩统计
  • 网警侦破特大“刷量引流”网络水军案:涉案金额达2亿余元
  • 央行副行长:我们在研究丰富政策工具箱,将适时推出增量政策
  • 李公明|一周画记:哈佛打响第一枪
  • 十四届全国人大常委会第十五次会议在京举行,审议民营经济促进法草案等
  • 传染病防治法修订草案提请三审,拟加强医疗机构疾控能力建设
  • 70后供销合作总社理事会原副主任侯顺利任中国融通外部董事