BeanFactory和ApplicationContext

這篇文章記錄BeanFactory和ApplicationContext創建bean的方法。

文章具體內容有:

  • BeanFactory
  • ApplicationContext

在初學Spring的IoC過程中,我們需要通過BeanFactory創建bean來了解IoC管理bean的過程,IoC創建bean的實現過程一般爲:

  1. 編寫類文件
  2. xml配置bean
  3. BeanFactory生成bean

1)首先編寫類文件User

package lzgsea.bean;

public class User {
	private Integer id;
	private String name;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}

}

2)編寫bean的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 id="user" class="lzgsea.bean.User"></bean>
	
</beans>

3.1)BeanFactory創建bean實現方式

XmlBeanFactory是BeanFactory的實現類,目前XmlBeanFactory已經過期,不推薦使用

BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("beans.xml"));
User user = (User)beanFactory.getBean("user");
System.out.println(user);

3.2)ApplicationContext創建bean實現方式

ApplicationContext是XmlBeanFactory的子接口,ClassPathXmlApplicationContext是ApplicationContext的實現類,現在推薦使用ClassPathXmlApplicationContext替代XmlBeanFactory創建bean

ApplicationContext act = new ClassPathXmlApplicationContext("beans.xml");
User user = (User) act.getBean("user");
System.out.println(user);

ApplicationContext提供了更多企業級特性,常用的實現類主要有三個:

ClassPathXmlApplicationContext:該容器從 XML 文件中加載已被定義的 bean。在這裏,你需要提供給構造器 XML 文件的完整路徑
FileSystemXmlApplicationContext:該容器從 XML 文件中加載已被定義的 bean。在這裏,你不需要提供 XML 文件的完整路徑,只需正確配置 CLASSPATH 環境變量即可,XML文件路徑使用Ant匹配,容器會從 CLASSPATH 中搜索 bean 配置文件。

Ant有三種匹配方式:

? : 匹配文件名中的一個字符

* :匹配任意字符

** :匹配多層路徑

上文創新ClassPathXmlApplicationContext對象也可寫成:

//掃描所有.xml文件
ApplicationContext act = new ClassPathXmlApplicationContext("*.xml");
WebXmlApplicationContext:該容器會在一個 web 應用程序的範圍內加載在 XML 文件中已被定義的 bean。


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