- 依赖注入:本质就是set注入!即依赖注入就是一个赋值操作,属性没有对应的set方法是不能实现这个属性的依赖注入的
- 依赖:bean对象的依赖对象的实例化,依赖于spring容器(这里说的bean所依赖的对象说的是这个bean内部引用的其他类的对象)
- 注入:bean对象中的属性,包括对象属性,都由spring容器来注入/赋值
如果我们去吧name属性的set方法删除
spring中依赖注入的3种方式
1.使用构造器注入
就是前面我们在spring配置文件中实现的按照构造器实例化bean对象
链接: link.
2.使用set方式注入【重点】
即调用类的set方法完成的依赖注入
3.其他/拓展方式注入
即使用c和p命名空间完成属性值的依赖注入
【环境搭建】
-
复杂类型
package com.thhh.pojo; public class Address { private String address; public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
-
真实测试对象
package com.thhh.pojo; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; public class Student { private String name; private Address address; private String[] books; private List<String> hobbys; private Map<String,String> card; private Set<String> games; private String wife; private Properties properties; public String getName() { return name; } public void setName(String name) { this.name = name; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } public String[] getBooks() { return books; } public void setBooks(String[] books) { this.books = books; } public List<String> getHobbys() { return hobbys; } public void setHobbys(List<String> hobbys) { this.hobbys = hobbys; } public Map<String, String> getCard() { return card; } public void setCard(Map<String, String> card) { this.card = card; } public Set<String> getGames() { return games; } public void setGames(Set<String> games) { this.games = games; } public String getWife() { return wife; } public void setWife(String wife) { this.wife = wife; } public Properties getProperties() { return properties; } public void setProperties(Properties properties) { this.properties = properties; } }
-
beans.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 https://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="student" class="com.thhh.pojo.Student"> <property name="name" value="张三"/> </bean> </beans>
-
测试
package com.thhh.pojo; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MyTest { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); Student student = (Student) context.getBean("student"); System.out.println(student.getName()); } }
搭建这个测试环境的意义就是学会在spring配置文件中,怎么给学生类中的这些复杂数据类型进行依赖注入
在下一篇博客将对"怎么给学生类中的这些复杂数据类型进行依赖注入"进行讲解
链接: Spring5(7) —— 依赖注入之Set注入.