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");
相关推荐
天天被压力15 分钟前
【A股分钟级高频数据完全手册 #04】指数分钟级行情数据接口:沪深指数Pro版最新分时取数
java·人工智能·python
敲代码的小小酥18 分钟前
谈SpringMVC与Spring WebFlux的区别与适用场景
java·后端·spring
天天被压力25 分钟前
【A股分钟级高频数据完全手册 #03】股票历史1分钟K线数据接口怎么用:Pro版批量拉取与本地缓存
java·人工智能·python
zhanghaha131427 分钟前
C# 系列教程_7 判断语句(分支)保姆级精讲
开发语言·c#
apcipot_rain32 分钟前
C++转Java日记(02)
java·开发语言·c++
nice_lcj52040 分钟前
【从零理解 Spring AI · 03】Spring AI 在 Spring 生态里的位置
java·spring boot·大模型·spring ai·ai应用开发
杜 硕1 小时前
从零开始的C++生活——第七讲——02
开发语言·c++·生活
zhanghaha13141 小时前
C# 系列教程_8 循环语句 保姆级精讲(面向新手)
开发语言·c#
麦麦麦当劳大王9 小时前
【油猴脚本】Boss直聘 岗位职责复制
开发语言·前端·javascript
starzy199010 小时前
深入理解Scala Map:从实现原理到工程实践
开发语言·后端·scala