在Spring的IOC容器裡配置Bean
•在 xml 檔案中通過 bean 節點來配置 bean
<bean id="helloWorld" class="com.spring.HelloWorld">
<property name="userName" value="Spring"></property>
</bean>
•id:Bean 的名稱。
–在 IOC 容器中必須是唯一的
–若 id 沒有指定,Spring 自動將許可權定性類名作為 Bean 的名字
–id 可以指定多個名字,名字之間可用逗號、分號、或空格分隔
class:bean的全類名,通過反射的方式在IOC容器中建立Bean的例項,要求Bean中必須有無參的構造器,如要求在HelloWorld類中必須有無參的構造器
public HelloWorld(){
System.out.println("HelloWorld's Constructor...");
}
•在 Spring IOC 容器讀取 Bean 配置建立 Bean 例項之前, 必須對它進行例項化. 只有在容器例項化後, 才可以從 IOC 容器裡獲取 Bean 例項並使用.
•Spring 提供了兩種型別的 IOC 容器實現.
–BeanFactory: IOC 容器的基本實現.
–ApplicationContext: 提供了更多的高階特性. 是 BeanFactory 的子介面.
–BeanFactory
–無論使用何種方式, 配置檔案時相同的.
•ApplicationContext 的主要實現類:
–ClassPathXmlApplicationContext:從 類路徑下載入配置檔案
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
–FileSystemXmlApplicationContext: 從檔案系統中載入配置檔案
•ConfigurableApplicationContext 擴充套件於 ApplicationContext,新增加兩個主要方法:refresh() 和 close(), 讓 ApplicationContext 具有啟動、重新整理和關閉上下文的能力
•ApplicationContext 在初始化上下文時就例項化所有單例的 Bean。
•WebApplicationContext 是專門為 WEB 應用而準備的,它允許從相對於 WEB 根目錄的路徑中完成初始化工作
通過bean的Id從IOC容器中獲取Bean的例項,利用ID定位到IOC容器中的Bean
完整原始碼
配置檔案application.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">
<!--配置bean-->
<bean id="helloWorld" class="com.spring.HelloWorld">
<property name="userName" value="Spring"></property>
</bean>
</beans>
HelloWorld類
public class HelloWorld {
private String userName;
public void setUserName(String userName) {
System.out.println("SetName: " + userName);
this.userName = userName;
}
public void hello(){
System.out.println("Hello: " + userName);
}
public HelloWorld(){
System.out.println("HelloWorld's Constructor...");
}
}
Main類
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
/*//建立HelloWorld的一個物件
HelloWorld helloWorld = new HelloWorld();
//為name屬性賦值
helloWorld.setUserName("Tom");
*/
//1、建立Spring的IOC容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
//2、從IOC容器中獲取Bean
HelloWorld helloWorld = (HelloWorld) ctx.getBean("helloWorld");
//3、呼叫hello方法
helloWorld.hello();
}
}