Bean XML 配置(1)- 通過XML配置加載Bean



系列教程


1. 定義Bean

在xml配置文件中(如"beans.xml"),添加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"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="
	http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context-3.0.xsd">
	
    <!-- 定義一個Bean -->
    <bean id="..." class="...">
       <!-- bean 配置 -->
    </bean>
    
    <!-- App bean -->
    <bean id="app" class="App" lazy-init="true"></bean>

</beans>

可以給Bean設置一些屬性,此處用到的屬性說明:

  • id: bean的唯一標識符
  • class: 指定bean的Java類名稱
  • lazy-init: 懶加載,讓Spring容器在Bean首次用到時創建Bean實例,而不是在應用一啟動就創建

2. 創建Spring容器

Spring容器負責加載bean配置文件、創建bean。

前面教程提到過有2種容器:

  • ApplicationContext
  • BeanFactory

ApplicationContext基於BeanFactory,比BeanFactory功能更強,更常用。

BeanFactory 容器

BeanFactory容器是簡單的IOC容器,只提供基本的依賴注入支持。BeanFactory本身是一個Java接口,最常見的實現是XmlBeanFactory類。通常不直接使用BeanFactory容器,而是用ApplicationContext 容器。

ApplicationContext 容器

ApplicationContext容器是更高級更常用的容器,繼承並擴展了BeanFactory的功能。同樣ApplicationContext本身是一個Java接口,常用的實現類是:

  • FileSystemXmlApplicationContext: 通過文件路徑加載bean的xml配置文件
  • ClassPathXmlApplicationContext: 通過類路徑加載bean的xml配置文件
  • WebXmlApplicationContext: 通過web網址加載bean的xml配置文件

代碼示例:


import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {
    public static void main(String[] args) {
        // ApplicationContext容器加載beans.xml
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
    }
}

3. 通過Spring容器獲取bean

通過Spring容器可以訪問它所管理的任意Bean,可使用getBean()方法返回Bean實例。

示例:

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {
    public static void main(String[] args) {
    
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        
        // 獲取Bean實例
        App app = context.getBean("app", App.class);
        // App app = (App) context.getBean("app");
    }
}

4. 關閉容器

最后應用結束時需要關閉容器,釋放資源,容器中的所有bean也將被銷毀。


context.close();

// 如果當前context類沒有close方法,需類型轉換為有close方法的類,如下所示
// ((ClassPathXmlApplicationContext) context).close();
// ((ConfigurableApplicationContext) context).close();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM