BeanFactory

BeanFactory

BeanFactory我们称为Ioc容器,是类的通用工厂,它可以创建管理各种类的对象。它使管理不同类型的Java对象成为可能。

  • 初始化

BeanFactory在初始化容器的时候,并未实例化Bean,直到第一次访问某个Bean 的时候才初始化目标Bean。

//获取配置资源
ResourcePatternResolver resolver=new PathMatchingResourcePatternResolver();
Resource resource=resolver.getResource("classPath://com.sunjie.tradition/bean.xml")
//创建Beanfactory
DefaultListableBeanFactory beanFactory=new DefaultListableBeanFactory();
//启动Ioc容器
XmlBeanDefinitionReader reader=new XmlBeanDefinitionReader(beanFactory);
reader.loadBeanDefinitions(resource);
//获取Bean
Person person=beanFactory.getBean("person",Person.class);

ApplicationContext

ApplicationContext由BeanFactory派生而来,提供更多的功能。

  • 初始化

ApplicationContext在初始化容器的时候就实例化好了所有单实例的Bean。

//读取配置文件初始化Ioc容器
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("com.sunjie.tradition/bean.xml");
//加载多个
//ApplicationContext applicationContext=new ClassPathXmlApplicationContext(new String[]{"bean1.xml","bean2.xml"});

//获取Bean
Person person=applicationContext.getBean("person",Person.class);

WebApplicationContext

WebApplicationContext集成自applicationContext,专门为Web应用准备。
为了方便Spring上下文和Web容器可以相互访问,在ServletContext中设置属性,保存Spring上下文,提供了如下方法访问。

//从servletContext中获取WebApplicationContext
WebApplicationContext webApplicationContext=WebApplicationContextUtils.getWebApplicationContext(servletContext);
//上面代码内部实现
//WebApplicationContext webApplicationContext=servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);

//WebApplicationContext中获取servletContext
ServletContext servletContext = webApplicationContext.getServletContext();
  • 初始化

WebApplicationContext的初始化必须有Web容器。
使用ContextLoaderListener方式初始化

 <!-- 指定配置文件-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath:conf/spring.xml
        </param-value>
    </context-param>

    <!-- ContextLoaderListener监听器将根据上面配置使用
         AnnotationConfigWebApplicationContext根据contextConfigLocation
         指定的配置类启动Spring容器-->
    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>

由于WebApplicationContext需要日志功能,所以需要配置Log4J。

  1. 方式1:把Log4J配置文件放在WEB-INF/classes下,就能自动加载。
  2. 方式2:如果配置文件在其他位置,则必须指定位置
 <!-- 日志配置路径  必须放在spring容器启动的前面-->
 <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/log4j.properties</param-value>
</context-param>  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值