Spring通过依赖注入实现IOC,那么什么是依赖注入呢?
此时我们有两个类,我们要在User类中newAccount类,并且可以调用Account类中的方法实现我们的需求。
public class Account {
private String address;
public void insert() {
System.out.println(address);
}
}
public class User {
private Account account;
public void save(){
account.insert();
}
}
但在此时调用,一定会报空指针异常的错误,因为没有对account初始化,也没有对address传值。
那么采用set注入后,有以下好处
1.平时,我们需要调用set方法给address赋值,但采用set注入,我们可以采用配置的方法赋值。
2.变量创建过程由先new Account ---> User 的过程变为 User ---->Account,调用所需的类。
如何set注入?
1.set注入基于set方法,每个类必须有set方法
public class Account {
private String address;
public void setAddress(String address) {
this.address = address;
}
public void insert() {
System.out.println(address);
}
}
public class User {
private Account account;
public void setAccount(Account account) {
this.account = account;
}
public void save(){
account.insert();
}
二 将类进行bean配置
<bean id="accountBean" class="com.chenchen.dao.Account"></bean>
<bean id="userBean" class="com.chenchen.service.User"></bean>
R然后在bean中加入要注入的值
<bean id="userBean" class="com.chenchen.service.User">
<property name="Account" ref="accountBean"></property>
</bean>
<bean id="accountBean" class="com.chenchen.dao.Account">
<property name="Address" value="日本天空树"></property>
</bean>
请注意,这里有个命名的问题 <property name=""> name的名字一定要是该属性所对应的方法去掉set后。例子
public void setAddress(String address) {
this.address = address;
}
在bean.xml配置中name一定要是Address ,同时在写set方法时,一定要是setXXXX