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");
相关推荐
014-code2 小时前
订单超时取消与库存回滚的完整实现(延迟任务 + 状态机)
java·开发语言
lly2024062 小时前
组合模式(Composite Pattern)
开发语言
游乐码3 小时前
c#泛型约束
开发语言·c#
Dontla3 小时前
go语言Windows安装教程(安装go安装Golang安装)(GOPATH、Go Modules)
开发语言·windows·golang
chushiyunen3 小时前
python rest请求、requests
开发语言·python
铁东博客3 小时前
Go实现周易大衍筮法三变取爻
开发语言·后端·golang
baidu_huihui3 小时前
在 CentOS 9 上安装 pip(Python 的包管理工具)
开发语言·python·pip
南 阳3 小时前
Python从入门到精通day63
开发语言·python
lbb 小魔仙3 小时前
Python_RAG知识库问答系统实战指南
开发语言·python
java1234_小锋3 小时前
Java高频面试题:Springboot的自动配置原理?
java·spring boot·面试