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");
相关推荐
鲸沉梦落1 小时前
Java中的Stream
java
yihuiComeOn1 小时前
[源码系列:手写Spring] AOP第二节:JDK动态代理 - 当AOP遇见动态代理的浪漫邂逅
java·后端·spring
p***h6432 小时前
JavaScript在Node.js中的异步编程
开发语言·javascript·node.js
散峰而望2 小时前
C++数组(二)(算法竞赛)
开发语言·c++·算法·github
Porunarufu2 小时前
Java·关于List
java·开发语言
靠沿2 小时前
Java数据结构初阶——Collection、List的介绍与ArrayList
java·数据结构·list
程序猿小蒜2 小时前
基于springboot的的学生干部管理系统开发与设计
java·前端·spring boot·后端·spring
子不语1803 小时前
Python——函数
开发语言·python
q***56383 小时前
Spring容器初始化扩展点:ApplicationContextInitializer
java·后端·spring
ndjnddjxn3 小时前
Rust学习
开发语言·学习·rust