1、依赖注入(DI:Dependency Injection)
依赖: 指bean对象创建依赖于容器,
bean对象的依赖资源
注入: 指bean对象的依赖的资源由容器来设置和装配
2、Spring 注入
2.1 构造器注入(见IOC创建对象)
2.2 setter注入:
要求被注入的属性必须有set方法,set方法的方法名由set+首字母大写,如果属性是boolean没有get方法 是is
a:常量注入
<bean id="user" class="spring.ioc.create.User">
<property name="name" value="mayun"></property>
</bean>
b:bean注入
Studnts.java
package spring.test;
public class Student {
public String name;
public Address addr;
public void setName(String name) {
this.name = name;
}
public void setAddr(Address addr) {
this.addr = addr;
}
public void show() {
System.out.println("name=" + name);
System.out.println("addr=" + addr.getAddress());
}
}
Address.java
package spring.test;
public class Address {
private String address;
public void setAddress(String address) {
this.address = address;
}
public String getAddress() {
return address;
}
}
beans.xml配置
<bean id="addr" class="spring.test.Address">
<property name="address" value="皇家理工"></property>
</bean>
<bean id="student" class="spring.test.Student">
<property name="name" value="zxl"></property>
<property name="addr" ref="addr"></property>
</bean>
运行:
c:数组注入
Student.java
package spring.test;
public class Student {
private String name;
private Address addr;
private String[] book;
public void setName(String name) {
this.name = name;
}
public void setAddr(Address addr) {
this.addr = addr;
}
public void setBook(String[] book) {
this.book = book;
}
public void show() {
System.out.println("name=" + name);
System.out.println("addr=" + addr.getAddress());
int i;
for (i = 0; i < book.length; i++) {
System.out.print(" " + book[i]);
}
System.out.println();
}
}
beans.xml
<property name="book">
<array>
<value>哈莫雷特</value>
<value>李尔王</value>
<value>奥赛罗</value>
</array>
</property>
运行
d:List注入
Student.java
package spring.test;
import java.util.List;
public class Student {
private String name;
private Address addr;
private String[] book;
private List<String> hobbies;
public void setName(String name) {
this.name = name;
}
public void setAddr(Address addr) {
this.addr = addr;
}
public void setBook(String[] book) {
this.book = book;
}
public void setHobbies(List<String> hobbies) {
this.hobbies = hobbies;
}
public void show() {
System.out.println("name=" + name);
System.out.println("addr=" + addr.getAddress());
int i;
for (i = 0; i < book.length; i++) {
System.out.print(" " + book[i]);
}
System.out.println();
System.out.println("hobbies=" + hobbies);
}
}
beans.xml
<property name="hobbies">
<list>
<value>gramming</value>
<value>sport</value>
<value>lenrn</value>
</list>
</property>
运行:
e: Map注入
Student.java
package spring.test;
import java.util.List;
import java.util.Map;
public class Student {
private String name;
private Address addr;
private String[] book;
private List<String> hobbies;
private Map<String,String> cards;
public void setName(String name) {
this.name = name;
}
public void setAddr(Address addr) {
this.addr = addr;
}
public void setBook(String[] book) {
this.book = book;
}
public void setHobbies(List<String> hobbies) {
this.hobbies = hobbies;
}
public void setCards(Map<String, String> cards) {
this.cards = cards;
}
public void show() {
System.out.println("name=" + name);
System.out.println("addr=" + addr.getAddress());
int i;
for (i = 0; i < book.length; i++) {
System.out.print(" " + book[i]);
}
System.out.println();
System.out.println("hobbies=" + hobbies);
System.out.println("cards="+cards);
}
}
beans.xml
<property name="cards">
<map>
<entry key="建设银行" value="101"></entry>
<entry key="工商银行" value="102"></entry>
<entry key="农业银行" value="103"></entry>
<entry>
<key><value>中国银行</value></key>
<value>104</value>
</entry>
</map>
</property>
f:set注入
Student.java
package spring.test;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class Student {
private String name;
private Address addr;
private String[] book;
private List<String> hobbies;
private Map<String,String> cards;
private Set<String> games;
public void setName(String name) {
this.name = name;
}
public void setAddr(Address addr) {
this.addr = addr;
}
public void setBook(String[] book) {
this.book = book;
}
public void setHobbies(List<String> hobbies) {
this.hobbies = hobbies;
}
public void setCards(Map<String, String> cards) {
this.cards = cards;
}
public void setGames(Set<String> games) {
this.games = games;
}
public void show() {
System.out.println("name=" + name);
System.out.println("addr=" + addr.getAddress());
int i;
for (i = 0; i < book.length; i++) {
System.out.print(" " + book[i]);
}
System.out.println();
System.out.println("hobbies=" + hobbies);
System.out.println("cards="+cards);
System.out.println("games="+games);
}
}
beans.xml
<property name="games">
<set>
<value>王者荣耀</value>
<value>枪战王者</value>
<value>阴阳师</value>
</set>
</property>
运行
g: null注入
Student.java
package spring.test;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class Student {
private String name;
private Address addr;
private String[] book;
private List<String> hobbies;
private Map<String,String> cards;
private Set<String> games;
private String wife;
public void setName(String name) {
this.name = name;
}
public void setAddr(Address addr) {
this.addr = addr;
}
public void setBook(String[] book) {
this.book = book;
}
public void setHobbies(List<String> hobbies) {
this.hobbies = hobbies;
}
public void setCards(Map<String, String> cards) {
this.cards = cards;
}
public void setGames(Set<String> games) {
this.games = games;
}
public void setWife(String wife) {
this.wife = wife;
}
public void show() {
System.out.println("name=" + name);
System.out.println("addr=" + addr.getAddress());
int i;
for (i = 0; i < book.length; i++) {
System.out.print(" " + book[i]);
}
System.out.println();
System.out.println("hobbies=" + hobbies);
System.out.println("cards="+cards);
System.out.println("games="+games);
System.out.println("wife="+wife);
}
}
beans.xml
<property name="wife">
<null/>
</property>
运行
h: properties
package spring.test;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
public class Student {
private String name;
private Address addr;
private String[] book;
private List<String> hobbies;
private Map<String, String> cards;
private Set<String> games;
private String wife;
private Properties info;
public void setName(String name) {
this.name = name;
}
public void setAddr(Address addr) {
this.addr = addr;
}
public void setBook(String[] book) {
this.book = book;
}
public void setHobbies(List<String> hobbies) {
this.hobbies = hobbies;
}
public void setCards(Map<String, String> cards) {
this.cards = cards;
}
public void setGames(Set<String> games) {
this.games = games;
}
public void setWife(String wife) {
this.wife = wife;
}
public void setInfo(Properties info) {
this.info = info;
}
public void show() {
System.out.println("name=" + name);
System.out.println("addr=" + addr.getAddress());
int i;
for (i = 0; i < book.length; i++) {
System.out.print(" " + book[i]);
}
System.out.println();
System.out.println("hobbies=" + hobbies);
System.out.println("cards=" + cards);
System.out.println("games=" + games);
System.out.println("wife=" + wife);
System.out.println("info" + info);
}
}
<property name="info">
<props>
<prop key="学号">2017</prop>
<prop key="姓名">alllen</prop>
<prop key="班级">计算本1601</prop>
</props>
</property>
i: p命名空间注入
xml配置
<bean id="userpname" class="spring.ioc.create.User" p:name="周黑鸭"/>
运行
j : c命名空间注入
需要在命名空间中加入:xmlns:p="http://www.springframework.org/schema/p"<bean id="usercname" class="spring.ioc.create.User" p:name="andy" p:age="18"/>