Spring04:DI(依赖注入)
概念
DI依赖注入(Dependency Injection,DI)就是IOC的一个实现,spring通过DI向javaBean(java类)注入属性
依赖:指javaBean的对象创建依赖于Spring容器
注入:指javaBean对象依赖的资源
构造器注入
public class User{ private User(int id,String name){ this.id = id; this.name = name; } private int id; private String name; }
setter注入 【重点】
public class Student { private String name; private Address address; private String[] books; private Listhobbys; private Mapcard; private Setgames; private String wife; private Properties info; public String getNameString() { return nameString; } public void setNameString(String nameString) { this.nameString = nameString; } 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 ListgetHobbys() { return hobbys; } public void setHobbys(Listhobbys) { this.hobbys = hobbys; } public MapgetCard() { return card; } public void setCard(Mapcard) { this.card = card; } public SetgetGames() { return games; } public void setGames(Setgames) { this.games = games; } public String getWife() { return wife; } public void setWife(String wife) { this.wife = wife; } public Properties getInfo() { return info; } public void setInfo(Properties info) { this.info = info; } @Override public String toString() { return "Student [nameString=" + nameString + ", address=" + address + ", books=" + Arrays.toString(books) + ", hobbys=" + hobbys + ", card=" + card + ", games=" + games + ", wife=" + wife + ", info=" + info + "]"; } }
xml配置注入
book1 book2 book3 book4 吃 喝 玩 乐 求生之路 文明 欧陆风云 INDIA Pakistan USA
测试
class Test { @org.junit.jupiter.api.Test void test() { ApplicationContext aContext = new ClassPathXmlApplicationContext("beans.xml"); Student student = aContext.getBean("student",Student.class); System.out.println(student); } }
结果
p命名和c命名注入
1.p标签注入
导入约束 : xmlns:p="http://www.springframework.org/schema/p"
2.c标签注入
导入约束 : xmlns:p="http://www.springframework.org/schema/p"
bean的作用域
在spring中声明一个bean时,你可以指定它的作用域(使用scope属性)
作用域 | 描述 |
---|---|
singleton | 在spring IOC容器中只存在一个Bean实例,Bean以单例的方式存在,默认 |
prototype | 每次从容器中调用Bean时,都会返回一个新的实例,每次调用getBean()时 |
request | 每一次HTTP请求都会创建一个新的Bean,适用于Web |
session | 同一个HTTP请求共享一个Bean,不同Session使用不同的Bean,适用有Web |
global-session | 一般用于Portlet应用环境,该作用域仅适用于Webt |
singleton作用域(单例模式)
Singleton测试
prototype(原型模式)
prototype测试
Spring Bean 生命周期
更加详细的
2288a49ad7ef 1 年前
7f26d342cac1 1 年前