Spring-3 ApplicationContext
程序员文章站
2022-05-21 19:26:38
...
Spring容器的最基本接口就是BeanFactory,它有一个子接口:ApplicationContext,称Spring上下文。
BeanFactory包含以下5个方法:
- boolean containsBean(String name): Spring容器中是否包含id为name的bean
- < T>T getBean(Class<> requied Type): 该类型时,对象唯一可以获取
- Object getBean(String name)
- <T> T getBean(String name, Class requiedType)
- Class<?> getType(String name)
ApplicationContext包含BeanFactory的全部功能,还有额外的功能,通常不会使用BeanFactory,建议使用ApplicationContext。
ApplicationContext的额外功能:
一、默认初始化suoyou所有singleton Bean,也可以通过配置取消。
当系统创建ApplicationContext时,默认会预初始化所有的singleton Bean。包括调用构造器创建实例,及根据<property>执行setter方法,意味着系统前期开销大。
bean:
package codeEETest;
public class Person
{
public Person()
{
System.out.println("==正在执行Person无参数的构造器==");
}
public void setTest(String name)
{
System.out.println("正在调用setName()方法,传入参数为:" + name);
}
}
xml:
<bean id="chinese" class="codeEETest.Person">
<!-- 驱动Spring执行chinese Bean的setTest()方法,以"孙悟空"为传入参数 -->
<property name="test" value="孙悟空"/>
</bean>
即使主程序只有一行代码,即创建容器:ApplicationContext ctx = new ClassPathXmlApplicationContext("codeEETest/beans.xml");
Spring容器仍然会初始化Bean,结果:
==正在执行Person无参数的构造器==
正在调用setName()方法,传入参数为:孙悟空
<bean id="chinese" class="codeEETest.Person" lazy-init="true">
<!-- 驱动Spring执行chinese Bean的setTest()方法,以"孙悟空"为传入参数 -->
<property name="test" value="孙悟空"/>
</bean>
二、ApplicationContext事件机制
推荐阅读
-
JSP Spring ApplicationContext的国际化支持
-
SpringBoot实战之ApplicationContext
-
Error starting ApplicationContext.错误解决
-
2021-08-10spring boot启动报错Error starting ApplicationContext(application和前端问题)
-
SpringBoot报错:Error starting ApplicationContext. To display the conditions report...........
-
springboot错误:Error starting ApplicationContext. To display the conditions report re-run your applica
-
为什么大多数IOC容器使用ApplicationContext,而不用BeanFactory
-
Spring学习笔记之Bean基本管理(BeanFactory,ApplicationContext
-
Beans, BeanFactory和ApplicationContext
-
spring+hibernate之applicationContext.xml配置