1. 程式人生 > >spring IOC實驗

spring IOC實驗

ati classpath ont mls ica pat 私有 tsa rom

軟件151 朱實友

1基於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-2.5.xsd">

<!--配置beanIDClass類全名等屬性,在標簽中還會有property等子標簽均與該bean相關(需要根據bean來設置)-->

<bean id="..." class="...">

</bean>

<bean id="..." class="...">

</bean>

</beans>

例如:

<bean id="greetingServiceImpl" class="cn.csdn.service.GreetingServiceImpl">

<property name="say">

<value>你好!</value>

</property>

</bean>

對應的BeanGreetingServiceImpl

package cn.csdn.service;

public class GreetingServiceImpl implements GreetingService {

/**私有屬性*/

private String say;

@Override

public void say() {

System.out.println("你打的招呼是:"+say);

}

public void setSay(String say){

this.say=say;

}

該類繼承的接口GreetingService:

package cn.csdn.service;

public interface GreetingService {

void say();

}

那麽何為SpringIoC控制反轉呢?

我們來創建一個JUnit測試類:

package cn.csdn.junit;

import org.junit.Test;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import org.springframework.context.support.FileSystemXmlApplicationContext;

import cn.csdn.service.GreetingService;

public class GreetingTest {

/**測試GreetingServiceImpl的方法*/

@Test

public void test1(){

/**加載spring容器 可以解析多個配置文件 采用數組的方式傳遞*/

ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});

/**IOC的控制反轉體現*/

GreetingService greetingService = (GreetingService) ac.getBean("greetingServiceImpl");

greetingService.say();

}

}

在測試類中我們看到想要實現IoC的控制反轉,首先應該加在容器:

加在容器的寫法有以下幾種:

可以同時配置多個XML描述文件

ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});

只能描述當前項目路徑下的一個XML描述文件

ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");

使用匹配的方法在路徑下尋找符合條件的XML描述文件

ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:app*.xml");

然後,我們需要通過IoC的反轉機制獲得Bean的對象:

GreetingService greetingService = (GreetingService) ac.getBean("greetingServiceImpl");

最後,我們通過獲得Bean對象調用Bean中的方法,輸出如下:

打的招呼是:你好!

spring IOC實驗