- Spring学习笔记(一) - 依赖注入
- Setter注入
- 引用类型
- 简单类型
- 构造器注入
- 引用类型
- 简单类型
- 依赖自动装配
- 集合注入
依赖注入描述了再容器中bean与bean之间依赖关系的过程,但是bean运行需要的数字或字符串需要提出一种新的方法进行解决
Setter注入 引用类型- 在bean中定义引用类型并提供可访问的set方法
public class BookServiceImpl implements BookService { private BookDao bookDao; public void setBookDao(BookDao bookDao) { this.bookDao = bookDao; } }
- 配置中使用property标签ref属性注入引用类性对象(可以注入多个引用类型)
-
在bean中定义引用类型并提供可访问的set方法
public class BookDaoImpl implements BookDao { private int connectionNum; private String databaseNum; public void setConnectionNum(int connectionNum) { this.connectionNum = connectionNum; } public void setDatabaseName(String databaseName) { this.databaseName = databaseName; } public void save() { System.out.println("book dao save ..."+databaseName+","+connectionNum); } }
-
配置中使用property标签value属性注入引用类性对象(可以注入多个简单类型)
-
在bean中定义引用类型属性并提供可访问的构造方法
public class BookServiceImpl implements BookService { private BookDao bookDao; public void save() { System.out.println("book service save ..."); bookDao.save(); } public BookServiceImpl(BookDao bookDao) { this.bookDao = bookDao; } }
-
配置中使用constructor-arg标签ref属性注入引用类型对象
- 在bean中定义引用类型属性并提供可访问的构造方法
public class BookDaoImpl implements BookDao { private int connectionNum; private String databaseName; public BookDaoImpl(int connectionNum, String databaseName) { this.connectionNum = connectionNum; this.databaseName = databaseName; } public void save() { System.out.println("book dao save ..."+databaseName+","+connectionNum); } }
- 配置中使用constructor-arg标签value属性注入引用类型对象
- IoC容器根据bean所依赖的资源在容器中自动查找并注入bean中的过程称为自动装配
- 配置中使用bean标签autowire 属性设置自动装配的类型,常见的方法:按类型装配(常用),按名称装配,按构造方法装配,不启用自动装配
- 注意事项:
- 自动装配于引用类型依赖注入,不能对简单类型进行操作;
- 使用按类型装配时,必须保障容器中相同类型的bean唯一,推荐使用;
- 使用按名称装配时必须保障容器中具有指定名称的bean,因变量名与配置耦合,不推荐使用;
- 自动装配优先级地域setter注入与构造器注入,同时出现时自动装配配置失效
- 在bean中定义引用类型属性并提供可访问的构造方法
public class BookDaoImpl implements BookDao { private int[] array;//数组 private List
list;//列表 private Set set;//集合 private Map map;//map键值对 private Properties properties;//properties public void setArray(int[] array) { this.array = array; } public void setList(List list) { this.list = list; } public void setSet(Set set) { this.set = set; } public void setMap(Map map) { this.map = map; } public void setProperties(Properties properties) { this.properties = properties; } public void save() { System.out.println("book dao save ..."); System.out.println("遍历数组:" + Arrays.toString(array)); System.out.println("遍历List" + list); System.out.println("遍历Set" + set); System.out.println("遍历Map" + map); System.out.println("遍历Properties" + properties); } } - 配置中使用properties标签name属性注入集合类型对象
100 200 300 广州大学 广东工业大学 广东外语外贸大学 广东财经大学 深圳大学 清华大学 北京大学 上海交通大学 复旦大学 XDU CS Pro.An