Spring(2)ioc操作

1、ioc操作分爲兩個部分

(1)ioc的配置文件方式

(2)Ioc的註解方式

2、ioc的底層原理

(1)xml配置文件

(2)Dom4j解決xml

(3)工廠設計模式

(4)反射

3、實現原理

原來的方式耦合度太高了

比如說

Publi class User{                              

Public void add(){

...

}}

那麼如果想要調用方法就需要

User user=new User();

User.add();

後來就採取使用工廠模式解耦合操作

Public class UserService{

Public void add(){}}

Public class UserServlet{

//調用

UserService s=Factory.getService();

s.add();

}

如果想要在UserServlet中調用UserService中的add方法就需要創建工廠類

//建一個工廠類

Public class Factory{

//提供一個返回UserService對象的方法

Public static UserService getService(){

Return new UserService();}}

//靜態方法返回service對象

但是這個方法還是不太好

因爲servlet和工廠還有耦合度

我們想要的是高內聚低耦合:就是一個類中緊密相連,不同的類中關聯度低是

ioc中是這麼做的(ioc中怎麼實現)

把我們的對象創建不是new出來的是配置文件配出來的

首先由兩個類

Public class Service{}

Public class Servlet{}

servlet要得到service的對象

第一步創建一個配置文件(xml)在配置文件中配置對象類

<bean id=”Servlce” class=”要創建對象的類的全路徑”/>

第二步創建一個工廠類使用dom4j解析文件+反射

Public class Factory{

//提供返回對象的方法

Public static Service getService(){

//1使用dom4j解析(對文件內容進行操作)xml文件

//根據配置文件的id值得到id值對應的class屬性得值

String classValue=”class屬性值”;

//2使用反射創建類的對象

Class clazz=Class.forName(classValue);

//創建類的對象

Service service=Class.newInstance();

Return service;

}}

4、ioc實例

1、導入jar

Jar包的特點是每個功能三個jar

(1)源代碼(2)文檔(3)基本

string最基本功能時只需要core container中的:

Beans Core Context SpEL

還需要導入支持日誌輸出的jar

Commons-logging-1.2.jar還有一個叫log4j-1.0.16.jar

2、創建一個類在類裏面創建方法

3、創建一個spring的配置文件配置創建的類

(1)Spring的核心配置文件名稱和位置不是固定的

一般放在src下面,建議applicationContext.xml

(2) 引入schema約束

找到docs目錄下的spring-framework-reference下的html

<?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/spring-beans.xsd  ">

       </beans>

 (3) 配置對象的創建

      <!-- ioc入門 -->

       <bean id="user" class="cn.itcast.ioc.User"></bean>

所以配置文件裏面是

<?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/spring-beans.xsd  "

       >

       

       <!-- ioc入門 -->

       <bean id="user" class="cn.itcast.ioc.User"></bean>

</beans>

4、測試對象創建

package cn.itcast.ioc;

 import org.junit.Test;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestIOC {

@Test

public void testUser() {

//1加載spring配置文件,根據創建對象

ApplicationContext context=

new ClassPathXmlApplicationContext("applicationControl.xml");

//因爲文件在src下所以直接可以寫文件名

//根據配置文件的配置把對象創建

//2得到配置創建的對象

//context.Bean("id值");

User user=(User) context.getBean("user");//得到就是對象

System.out.println(user);//如果user對象能創建得到的是地址

user.add();

}

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章