Spring學習日記02_IOC_屬性注入_其他類型屬性
ICO操作Bean管理(xml注入其它類型屬性)
- 字面量
- null值
<property name="address">
<null></null>
</property>
- 屬性值包含特殊符號
<!--
1.把<>進行轉義<;>
2.把帶特殊符號內容寫到<![CDATA[...]]>
-->
<property name="address">
<value><![CDATA[<<南京>>]]></value>
</property>
- 注入屬性-外部bean
- 創建兩個類:service類和dao類
- 在service調用dao裡面熱點方法
service層
public class UserService {
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void add(){
System.out.println("service add...");
userDao.update();
}
}
Dao層
public interface UserDao {
public void update();
}
public class UserDapImpl implements UserDao {
public void update() {
System.out.println("Dao update...");
}
}
xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="//www.springframework.org/schema/beans"
xmlns:xsi="//www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="//www.springframework.org/schema/beans //www.springframework.org/schema/beans/spring-beans.xsd">
<!--1.service和dao對象創建-->
<bean id="userService" class="Spring.Ioc.Day04.service.UserService">
<!--注入userDao對象
name屬性:類裡面屬性名稱
ref屬性:創建userDao對象bean標籤id值
-->
<property name="userDao" ref="userDaoImpl"></property>
</bean>
<bean id="userDaoImpl" class="Spring.Ioc.Day04.dao.UserDapImpl"></bean>
</beans>
test測試
public class testBean {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("bean2.xml");
UserService userService = context.getBean("userService",UserService.class);
userService.add();
}
}
- 注入屬性-內部bean
- 一對多關係:部門和員工
- 一個部門有多個員工,一個員工屬於一個部門
Dept類
public class Dept {
private String dname;
public void setDname(String name) {
this.dname = name;
}
@Override
public String toString() {
return "Dept{" +
"dname='" + dname + '\'' +
'}';
}
}
Emp類
public class Emp {
private String ename;
private String gender;
//員工屬於一個部門,使用對象形式表示
private Dept dept;
public void setDept(Dept dept) {
this.dept = dept;
}
public void setEname(String ename) {
this.ename = ename;
}
public void setGender(String gender) {
this.gender = gender;
}
public void add(){
System.out.println(ename+"::"+gender+"::"+dept);
}
}
xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="//www.springframework.org/schema/beans"
xmlns:xsi="//www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="//www.springframework.org/schema/beans //www.springframework.org/schema/beans/spring-beans.xsd">
<!--內部bean-->
<bean id="emp" class="Spring.Ioc.Day04.bean.Emp">
<!--設置兩個普通屬性-->
<property name="ename" value="aaa"></property>
<property name="gender" value="man"></property>
<!--設置對象類型屬性-->
<property name="dept">
<bean id="dept" class="Spring.Ioc.Day04.bean.Dept">
<property name="dname" value="安保部"></property>
</bean>
</property>
</bean>
</beans>
test類
public void test(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean3.xml");
Emp emp = context.getBean("emp",Emp.class);
emp.add();
}
- 注入屬性-級聯賦值
- 第一種寫法
xml
<bean id="emp" class="Spring.Ioc.Day04.bean.Emp">
<property name="ename" value="bbb"></property>
<property name="gender" value="man"></property>
<!--級聯賦值-->
<property name="dept" ref="dept"></property>
</bean>
<bean id="dept" class="Spring.Ioc.Day04.bean.Dept">
<property name="dname" value="財務部"></property>
</bean>
- 第二種寫法
- 需要提供屬性的get方法
Emp類
//Dept屬性增加get方法
public Dept getDept() {
return dept;
}
xml
<bean id="emp" class="Spring.Ioc.Day04.bean.Emp">
<property name="ename" value="bbb"></property>
<property name="gender" value="man"></property>
<!--級聯賦值-->
<property name="dept.dname" value="技術部"></property>
</bean>