spring IOC實驗
軟件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">
<!--配置bean的ID,Class類全名等屬性,在標簽中還會有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>
對應的Bean的GreetingServiceImpl:
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();
}
那麽何為Spring的IoC控制反轉呢?
我們來創建一個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實驗