這篇文章記錄BeanFactory和ApplicationContext創建bean的方法。
文章具體內容有:
- BeanFactory
- ApplicationContext
在初學Spring的IoC過程中,我們需要通過BeanFactory創建bean來了解IoC管理bean的過程,IoC創建bean的實現過程一般爲:
- 編寫類文件
- xml配置bean
- 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。