IOC操作
- 實質:把對象的創建交給spring來管理
- IOC操作:
- 文件配置方式
- 註解方式
- IOC底層原理:
- xml配置文件:配置要創建對象類
- dom4j解析配置文件
- 工廠設計模式
- 反射:創建類的對象
IOC底層原理:
- 最底層:
缺陷:耦合度太高
public class User(){add();}
//在service中調用add()方法
User user=new User();
user.add();
- 工廠模式:
public class UserService{public void add()};
//創建工廠類
public class Factory{ getService(){return new UserService();}}
目的:UserServlet要得到一個User對象
public class UserServlet{UserService s=Factory.getService();}
- IOC原理:
目的:得到UserService對象
好處:以後只用修改xml文件
具體做法:- 創建xml文件
<bean id="user" class="cn.itclass.ioc.User"></bean>
- 創建工廠類:使用dom4j解析配置文件+反射
1. 使用dom4j解析xml文件
根據id值user,得到id對應的class屬性的值
String classValue=“class屬性值”;
2. 使用反射創建類對象
String cla=Class.forName(classValue); //類
UserService service=cla.newInstance(); //創建類的對象
//返回對象
return service;
IOC使用案例:
-
導入jar包
- beans context core expression 基本核心包
- log4j:支持日誌輸出的jar包
-
創建類,在類裏面創建方法
-
創建spring配置文件,配置創建類
-
寫代碼測試對象創建
以下是配置文件中的內容:
- 配置文件中引入schema約束
- 配置文件已經封裝好,可以直接得到對象
- spring核心配置文件名稱和位置不是固定的
建議放到src下面,官方建議applicationContext.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 http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- IOC入門 -->
<bean id="user" class="cn.itclass.ioc.User"></bean>
</beans>
測試用例:
@Test
public void testUser () {
//1. 這一步作用:加載配置文件,根據配置文件中的內容創建好一個對象
/*
* dom4j解析配置文件,但是配置文件已經封裝好一個對象
* 這一步作用:加載配置文件,根據配置文件中的內容創建好一個對象
*/
ApplicationContext context=new ClassPathXmlApplicationContext("bean1.xml");
//參數是xml配置文件的地址
//2.得到配置對象
User user=(User) context.getBean("user"); //配置文件中的id值
System.out.println(user);
user.add();
}