springDI注入

一. 含义

DI:Dependency Injection,依赖注入,在Spring框架负责创建Bean对象时,动态的将依赖对象注入到Bean组件中!!

二. 注入条件与方式

编写属性时提供该属性的set方法,提供注入口

复制代码
// 编写成员属性,一定需要提供该属性的set方法
    private OrderDao orderDao;
    // 一定需要提供该属性的set方法,IOC容器底层就通过属性的set方法方式注入值
    public void setOrderDao(OrderDao orderDao) {
        this.orderDao = orderDao;
    }
​
    // 消息
    private String msg;
    // 年龄
    private int age;
​
    public void setMsg(String msg) {
        this.msg = msg;
    }
​
    public void setAge(int age) {
        this.age = age;
    }




<!--DI:依赖注入-->
    <bean id="os" class="com.qcbyjy.service.OrderServiceImpl">
        <property name="orderDao" ref="od" />
        <property name="msg" value="你好" />
        <property name="age" value="30" />
    </bean>
    <bean id="od" class="com.qcbyjy.dao.OrderDaoImpl"></bean>

另一种注入方式:构造方法式注入

复制代码
 // 名称
    private String cname;
    // 金额
    private Double money;
​
    public Car(String cname, Double money) {
        this.cname = cname;
        this.money = money;
    }


<bean id="car" class="com.qcbyjy.demo2.Car">
    <constructor-arg name="cname" value="大奔" />
    <constructor-arg name="money" value="400000" />
 </bean>

数组,集合(List,Set,Map),Properties等的注入

复制代码
 private String [] strs;
    public void setStrs(String[] strs) {
        this.strs = strs;
    }
​
    private List<String> list;
    public void setList(List<String> list) {
        this.list = list;
    }
​
    private Map<String,String> map;
    public void setMap(Map<String, String> map) {
        this.map = map;
    }
​
    private Properties properties;
    public void setProperties(Properties properties) {
        this.properties = properties;
    }
​




<bean id="collectionBean" class="com.qcbyjy.demo3.CollectionBean">
        <property name="strs">
            <array>
                <value>美美</value>
                <value>小凤</value>
            </array>
        </property>
        <property name="list">
            <list>
                <value>熊大</value>
                <value>熊二</value>
            </list>
        </property>
        <property name="map">
            <map>
                <entry key="aaa" value="老王"/>
                <entry key="bbb" value="小王"/>
            </map>
        </property>
        <property name="properties">
            <props>
                <prop key="username">root</prop>
                <prop key="password">123456</prop>
            </props>
        </property>
    </bean>

三. 多配置文件

在工厂创建实例的时候可以使用多个application.xml文件,有两种方式

1.在主配置文件中写入<import resource="applicationContext2.xml"/>,

例如如下代码则在application.xml中写入<import resource="applicationContext2.xml"/>

复制代码
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
"applicationContext.xml");

2.使用多个配置文件

复制代码
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
"applicationContext.xml","applicationContext2.xml");
相关推荐
小严家几秒前
Java基础教程大全完整学习路径
java·开发语言·学习
毕设源码-朱学姐1 分钟前
【开题答辩全过程】以 基于Java的电影推荐系统为例,包含答辩的问题和答案
java·开发语言
sheji34167 分钟前
【开题答辩全过程】以 基于SSM的校园新冠疫苗接种信息管理系统为例,包含答辩的问题和答案
java·开发语言
菜鸟233号8 分钟前
力扣78 子集 java实现
java·数据结构·算法·leetcode
dddaidai12317 分钟前
深入JVM(四):垃圾收集器
java·开发语言·jvm
BBB努力学习程序设计23 分钟前
Java方法(函数)完全指南:初学者的第一个"工具箱"
java
AI科技星29 分钟前
圆柱螺旋运动方程的一步步求导与实验数据验证
开发语言·数据结构·经验分享·线性代数·算法·数学建模
laocooon52385788634 分钟前
python 收发信的功能。
开发语言·python
xixixi7777734 分钟前
STIX/TAXII:网络威胁情报的“普通话”与“顺丰快递”
开发语言·安全·php·威胁·攻击检测·stix·taxii
爬山算法36 分钟前
Netty(19)Netty的性能优化手段有哪些?
java·后端