一:使用外部bean注入:
步骤一:在配置文件中实例化实现类:
<bean id="userDaoImpl" class="com.action.spring.dao.UserDaoImpl"></bean>
步骤二: 然后实例化使用类:
<bean id="userService" class="com.action.spring.service.UserService"></bean>
步骤三:此时通过注入外部
<property name="userDao" ref="userDaoImpl"></property>
其中name
为属性名。此处需要注意的是和普通值使用的value
不同的是,注入外部Bean需要使用 ref
属性。
直接上代码: 创建UserService
类和UserDao
类,其中UserDao
为抽象类。对UserDao
进行重写UserDaoImpl
类。
-
UserServoce使用类:
package com.action.spring.service; import com.action.spring.dao.UserDao; import com.action.spring.dao.UserDaoImpl; public class UserService { private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } public void add() throws Exception { System.out.println("Service add...................."); userDao.update(); /* 传统方法 * UserDao userDao = new UserDaoImpl(); * userDao.update(); */ } }
-
UserDao
基类
package com.action.spring.dao; public interface UserDao { public abstract void update() throws Exception; }
-
UserDao
类的实现类UserDaoImpl
类
package com.action.spring.dao; public class UserDaoImpl implements UserDao{ private String uname; public void setUname(String uname) { this.uname = uname; } @Override public void update() throws Exception { System.out.println("update..............."); } }
-
重点重点: 配置
XML
配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 注入外部bean --> <bean id="userService" class="com.action.spring.service.UserService"> <!--将userService中的元素userDao初始化为实现类userDaoImpl--> <property name="userDao" ref="userDaoImpl"></property> </bean> <bean id="userDaoImpl" class="com.action.spring.dao.UserDaoImpl"></bean> </beans>
-
二:使用内部bean注入属性
其实也就是不使用ref属性,直接使用嵌套在内部bean:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="userService" class="com.action.spring.service.UserService"> <!--将userService中的元素userDao初始化为实现类userDaoImpl--> <property name="userDao"> <!--使用嵌套来是实现内部bean,但是个人建议最好用外部bean,更加清晰,而且可以实例化对象--> <bean id="userDao" class="com.action.spring.dao.UserDao"></bean> </property> </bean> <bean id="userDaoImpl" class="com.action.spring.dao.UserDaoImpl"></bean> </beans>
三:使用级联赋值注入属性:
注意:级联赋值的时候是需要有get方法获取属性的,没有则会报错
<bean id="userService" class="com.action.spring.service.UserService"> <!--将userService中的元素userDao初始化为实现类userDaoImpl--> <property name="userDao"> <bean id="userDao" class="com.action.spring.dao.UserDao"></bean> </property> <!--使用级联赋值来直接给其中的元素赋值,但是注意,赋值的这个元素一定要有get方法来获取--> <property id="userDao.name" value="hanxiao"></property> </bean> <bean id="userDaoImpl" class="com.action.spring.dao.UserDaoImpl"></bean> </beans>
四:IOC注入集合类型属性
一:注入数组类型属性
二:注入List类型属性
三:注入Map类型属性
这个比较简单。不直接设置value,而是在property标签下面加入map,list,数组的标签,在他们的标签下写入多个value值
四:放入多个对象的list:
使用ref+bean传递路径,引用外部类
五:提取部分类型属性值eg:list:
<!-- 1.设置约束,在spring配置文件中引入名称util,设置xsi:schemLocation,将p命名空间那个复制下来,然后把所有的beans换为util xmls:util="http://www.springframework.org/scheme/util" xsi:schemeLocation="http://www.springframework.org/scheme/util http://www.springframework.org/scheme/util/spring-util.xsd" 2.使用util标签完成对list集合注入提取: <util:list id="booklist"> <value></value> <value></value> </util:list> --> <!--1.提取list集合类型属性注入--> <util:list id="bookList"> <value>list1</value> <value>list2</value> <value>list3</value> </util:list> <!--提取list集合类型属性注入使用,使用ref引入外部--> <bean id="book" class="com.spring_test.book"> <property name="list" ref="bookList"></property> </bean>