spring依赖注入
Bean的依赖注入概念
依赖注入(Dependency Injection):它是Spring框架核心的IOC具体实现。在编写程序时,通过控制反转,把对象的创建交给了spring,但是代码中不可能出现没有依赖的情况。IOC解耦只是降低他们的依赖关系,但不会消除。例如:业务层任然会调用持久层的方法。那这种业务层和持久层的依赖关系,在使用spring之后,就让spring来维护了。简单的说,就是坐等框架把持久层对象传入业务层,而不用我们自己去获取。
Bean的依赖注入方式
- 构造方法
- 创建有参构造方法,顺便创建无参的构造方法
- 配置spring容器调用有参构造时进行注入
-
<bean id="userDao" class="com.dao.impl.UserDaoImpl"/> <bean id="userService" class="com.service.impl.UserServiceImpl"> <constructor-arg name="userDao" ref="userDao"></constructor-arg> </bean>
- set方法
-
在对应方法中对需要注入的对象设置set方法
-
配置spring容器调用set方法进行注入
-
<bean id="userDao" class="com.dao.impl.UserDaoImpl"/> <bean id="userService" class="com.service.impl.UserServiceImpl"> <property name="userDao" ref="userDao"/> </bean> -
set方法中有个P命名空间注入(知道就行)
bean的依赖注入的数据类型
除了引用对象可以注入,集合和普通的数据类型都可在spring容器中注入
-
普通数据注入
-
<bean id="userDao" class="com.dao.impl.UserDaoImpl"> <property name="company" value="aaa"></property> <property name="age" value="15"></property> </bean> -
list集合注入
-
<bean id="userDao" class="com.dao.impl.UserDaoImpl"> <property name="strList"> <list> <value>aaa</value> <value>bbb</value> <value>ccc</value> </list> </property> </bean> -
或者在list集合中注入引用类型
<bean id="user1" class="com.zyl.domain.User"> <property name="age" value="12"></property> <property name="name" value="zyl"></property> </bean> <bean id="user2" class="com.zyl.domain.User"> <property name="age" value="13"></property> <property name="name" value="zyl2"></property> </bean> <bean id="userDao" class="com.zyl.dao.impl.UserDaoImpl"> <property name="userList"> <list> <ref bean="user1"/> <ref bean="user2"/> </list> </property> </bean> -
map集合注入
<bean id="u1" class="com.domain.User"/> <bean id="u2" class="com.domain.User"/> <bean id="userDao" class="com.dao.impl.UserDaoImpl"> <property name="userMap"> <map> <entry key="user1" value-ref="u1"/> <entry key="user2" value-ref="u2"/> </map> </property> </bean> -
properties集合注入
<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"> <property name="properties"> <props> <prop key="p1">aaa</prop> <prop key="p2">bbb</prop> <prop key="p3">ccc</prop> </props> </property> </bean>
spring引入其他配置文件
<import resource="applicationContext-xxx.xml"/>