Spring Beanfactory create

Spring的依赖注入容器的核心是Beanfactory。BeanFactory负责读取bean配置文档,管理bean的加载,实例化,维护bean之间的依赖关系,负责bean的声明周期。创建BeanFactory 可以通过手工代码的方式也可以通过配置文件的方式。具体有以下几种方式:

 

1. ClassPathXmlApplicationContext:默认从classpath的xml配置文件创建,可以从jar包中读取配置文件

BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");  
BeanFactory factory = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");  
BeanFactory factory = new ClassPathXmlApplicationContext("classpath:/applicationContext.xml");  

 

如果要读多个配置文件, 可以用以下下方式

BeanFactory factory = new ClassPathXmlApplicationContext(new String[]{"applicationContext-1.xml","applicationContext-2.xml"});  
BeanFactory factory = new ClassPathXmlApplicationContext("classpath*:/applicationContext*.xml");  
BeanFactory factory = new ClassPathXmlApplicationContext("classpath*:src/folder/applicationContext*.xml");  


classpath: 只能加载一个配置文件,如果配置了多个,则只加载第一个
classpath*: 可以加载多个配置文件,如果有多个配置文件,就用这个

 

2. FileSystemXmlApplicationContext:默认读取项目工作路径 即项目的根目录

BeanFactory factory = new FileSystemXmlApplicationContext("src/java/application.xml")
BeanFactory factory = new FileSystemXmlApplicationContext("file:C:/application.xml")
BeanFactory factory = new FileSystemXmlApplicationContext("classpath:application.xml")

如果前缀是file, 必须使用绝对路径,同样也可使用前缀classpath, 功能同上

 

3. XmlWebApplicationContext : Default WebApplicationContext implementation class for ContextLoader

 

web.xml

<listener>
   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>${path}/applicationContext.xml</param-value>
</context-param>

 

4. SingletonBeanFactoryLocator

 

Beanfactory factory = SingletonBeanFactoryLocator.getInstance().useBeanFactory("factoryKey")

默认的配置文件是:classpath*:beanRefFactory.xml, 当然我们也可以指定需要读取的文件

Beanfactory factory = SingletonBeanFactoryLocator.getInstance("${path}/config.xml").useBeanFactory("factoryKey")

 

在项目中如果我们只需要Beanfactory的基本功能,而不需要额外的比如国际化,我们就可以通过这种方式,而且这种方式的好处是如果在一个大的项目中有多个子项目,我们可以创建父Beanfactory和子Beanfactory,子Beanfactory可以访问父Beanfactory,避免重复创建Beanfactory。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值