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");
相关推荐
老华带你飞8 小时前
动漫资讯|基于Springboot的动漫交流网站设计与实现(源码+数据库+文档)
java·数据库·spring boot·后端·论文·毕设·国产动漫网站
rengang668 小时前
105-Spring AI Alibaba Module RAG 使用示例
java·人工智能·spring·rag·spring ai·ai应用编程
JIngJaneIL8 小时前
机器人信息|基于Springboot的机器人门户展示系统设计与实现(源码+数据库+文档)
java·数据库·spring boot·机器人·论文·毕设·机器人门户展示系统
鬼火儿8 小时前
15.<Spring Boot 日志>
java·后端
Mos_x8 小时前
SpringBoot】Spring Boot 项目的打包配置
java·后端
qianbailiulimeng8 小时前
【Spring Boot】Spring Boot解决循环依赖
java·后端
何中应8 小时前
Spring Boot解决循环依赖的几种办法
java·spring boot·后端
donotshow8 小时前
SpringBoot】Spring Boot 项目的打包配置
java·后端
zhangfeng11338 小时前
亲测有效的mem 流行病预测,时间序列预测,r语言做移动流行区间法,MEM流行病阈值设置指南
开发语言·r语言·生物信息