- Spring的xml依赖注入
- 1.Bean依赖注入方式
- 1.1 set注入
- 1.2 构造器注入
- 2.Bean依赖注入的数据类型
- 2.1 普通数据的注入
- 2.2 集合数据类型(List < String >)的注入
- 2.3 集合类型(List< Ref >)的注入
- 2.4集合数据类型( Map
1.在UserServiceImpl中添加setUserDao方法
public class UserServiceImpl implements UserService {
private UserDao userDao;
//set方法
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Override
public void save() {
userDao.save();
}
}
2.配置Spring容器调用set方法进行注入
- property标签,值value,引用ref
3.也可以使用p命名空间注入
P命名空间注入本质也是set方法注入,但比起上述的set方法注入更加方便,主要体现在配置文件中
xmlns:p="http://www.springframework.org/schema/p"1.2 构造器注入>
1.在UserServiceImpl中创建有参数构造方法和无参数构造方法
public class UserServiceImpl implements UserService {
@Override
public void save() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao = (UserDao) applicationContext.getBean("userDao");
userDao.save();
}
}
2.配置Spring容器调用有参构造时进行注入
2.Bean依赖注入的数据类型
上面的操作,都是注入的引用Bean,除了对象的引用可以注入,普通数据类型,集合等都可以在容器中进行注入。
注入数据的三种数据类型
- 普通数据类型
- 引用数据类型
- 集合数据类型
其中引用数据类型,此处就不再赘述了,之前的操作都是对UserDao对象的引用进行注入的,下面将以set方法注入为例,演示普通数据类型和集合数据类型的注入。
2.1 普通数据的注入1.普通数据类型
------------UserDaoImpl Bean--------------
public class UserDaoImpl implements UserDao {
private String company;
private int age;
public void setCompany(String company) {
this.company = company;
}
public void setAge(int age) {
this.age = age;
}
public void save() {
System.out.println(company+"==="+age);
System.out.println("UserDao save method running....");
}
}
---------------XML---------------
2.2 集合数据类型(List < String >)的注入
------------UserDaoImpl Bean--------------
public class UserDaoImpl implements UserDao {
private List strList;
public void setStrList(List strList) {
this.strList = strList; }
public void save() {
System.out.println(strList);
System.out.println("UserDao save method running....");
}
}
------------------xml---------------------
aaa
bbb
ccc
2.3 集合类型(List< Ref >)的注入
------------UserDaoImpl------------------------
public class UserDaoImpl implements UserDao {
private List userList;
public void setUserList(List userList) {
this.userList = userList;
}
public void save() {
System.out.println(userList);
System.out.println("UserDao save method running....");
}
}
----------------xml------------------------
2.4集合数据类型( Map----------------UserDaoImpl----------------------
public class UserDaoImpl implements UserDao {
private Map userMap;
public void setUserMap(Map userMap) {
this.userMap = userMap;
}
public void save() {
System.out.println(userMap);
System.out.println("UserDao save method running....");
}
}
----------------xml-------------------------
2.5 集合数据类型(Properties)的注入
----------------UserDaoImpl--------------------------
public class UserDaoImpl implements UserDao {
private Properties properties;
public void setProperties(Properties properties) {
this.properties = properties;
}
public void save() {
System.out.println(properties);
System.out.println("UserDao save method running....");
}
}
-------------------xml--------------------------
aaa
bbb
ccc
3.引入其他配置文件,分模块开发
实际开发中,Spring的配置内容非常多,这就导致Spring配置很繁杂且体积很大,所以,可以将部分配置拆解到其他配置文件中,而在Spring主配置文件通过import标签进行加载.
4.总结
标签 id属性:在容器中Bean实例的唯一标识,不允许重复 class属性:要实例化的Bean的全限定名 scope属性:Bean的作用范围,常用是Singleton(默认)和prototype 标签:属性注入 name属性:属性名称 value属性:注入的普通属性值 ref属性:注入的对象引用值 标签



