`

Spring框架中的ApplicationContext

阅读更多

读了外国的本书上才知道,"ApplicationContext"对象,才是构建了Spring框架的灵魂。包括全部的"依赖注入"都是在ApplicationContext内部完成的,如果说"依赖注入"是Spring框架的核心概念,那么"ApplicationContext"就是它的核心对象.

ApplicationContext对象是BeanFactory的特化,这里的特化大概意思是说:ApplicationContext对象可以看作是个功能齐全的BeanFactory。"BeanFactory"是充当Spring框架中所有Bean对象的注册表.通常BeanFactory是负责创建Bean对象,并且将各个Bean之间的依赖关系进行关联。一般的应用程序都是与ApplicationContext互交,而不是和BeanFactory互交.ApplicationContext能通过运行BeanFacotoryPostProcessors自动的处理BeanFactory.

ApplicationContext通常使用XML文件进行配置,该文件使用是简单的DTD.

如下:

<?xml version="1.0">
<!DOCTYOE beans PUBLIC"-//SPRING//DTD BEAN//EN" http://www.springframework.org/dtd/spring-beans/dtd>
<beans>
    <bean  id="cashRegister" class="org.example.CashRegisterImpl">  

         <property  name="priceMatrix" ref="priceMatrixBean"/>

    </bean>

    <bean id="priceMatrixBean" class="org.example.PriceMatrixImpl"/>

</beans>

BeanFactory对象可以有多种实例化的方式,虽然大多数情况下不用我们进行创建,但是还是可以有几种实例化的方式。

它可以InputStream作为参数实例化,也可以将org.springframework.core.io.Resource它实例化.有多种:ClassPathResource、 FileSystemResource、InputStreamResource、ServletContextResource、 UrlResource。可根据不同情况下使用.

Resource resource = new ClassPathResource("applicationContext.xml");
BeanFactory factory = new XmlBeanFactory(resource);
HelloBean hello = (HelloBean) factory.getBean("helloBean");

and

ClassPathResource res = new ClassPathResource("applicationConxtext.xml");

XmlBeanFactory factory = new XmlBeanFactory(res);

or

InputStream is = new FileInputStream("application.xml");
XmlBeanFactory factory = new XmlBeanFactory(is);
 or

ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext(
new String[] {"applicationContext.xml", "applicationContext-two.xml"});

BeanFactory factory = (BeanFactory) appContext; 

 

Beans element can be defined in multiple bean, if you want to take out once all of the bean can be used org.springframework.beans.factory.ListableBeanFactory

for example:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <bean id="helloBeanOfJustin" class="onlyfun.caterpillar.HelloBean">
        <property name="helloWord"><value>Hello!Justin!</value></property>
    </bean>
    <bean id="helloBeanOfcaterpillar" class="onlyfun.caterpillar.HelloBean">
        <property name="helloWord"><value>Hello!caterpillar!</value></property>
    </bean>
</beans>

Resource resource = new ClassPathResource("bean.xml");
        ListableBeanFactory factory = new XmlBeanFactory(resource);
       
        Map helloBeans = factory.getBeansOfType(HelloBean.class, false, false);

 If all of the "bean" is defined in an applicationContext the application is for a small can, but if the big applications, the required bean object is very large, and this time you can use: org.springframework.beans.factory. xml.XmlBeanDefinitionReader to carry out multiple bean.xml the load, it needs to org.springframework.beans.factory.support.BeanDefinitionRegistry object as a build-time parameter。

for example:

BeanDefinitionRegistry reg = new DefaultListableBeanFactory();
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(reg);
   
// 载入bean   
reader.loadBeanDefinitions(new ClassPathResource("bean1.xml"));
reader.loadBeanDefinitions(new ClassPathResource("bean2.xml"));
....

// 获取Bean
BeanFactory bf = (BeanFactory) reg;
Object o = bf.getBean("helloBean");
....

 ApplicationContext继承了org.springframework.context.MessageResource对象。

可以使用getMessage()的各种方法来取得资源,可以实现国际化。MessageResource的一个子类,org.springframework.context.support.ResourceBundleMeaageSource,可以用它来获取资源文件。

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 
<beans> 
    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> 
        <property name="basename"> //资源文件的名字
            <value>messages</value
        </property> 
    </bean> 
</beans>
>//设定了文件前缀,可以是messages_en_US.properties,messages_zh_TW.properties、messages_*.properties等等。
messages_en_US.properties内容:
userlogin=User {0} login at {1}
message_zh_TW.properties內容:
userlogin=使用者 {0} 於 {1} 登入
native2ascii message_zh_TW.properties message_zh_TW.txt
import java.util.*; 
import org.springframework.context.*; 
import org.springframework.context.support.*; 

public class Test { 
    public static void main(String[] args) throws Exception { 
        ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml"); 

        Object[] arguments = new Object[] {"adminsun", Calendar.getInstance().getTime()}; 

        System.out.println(context.getMessage("userlogin", arguments, Locale.US)); 
        System.out.println(context.getMessage("userlogin", arguments, Locale.TAIWAN)); 
    } 
}
ClassPathXmlApplicationContext继承了ApplicationContext。读取xml获取bean对象。给getMessage()方法传递参数。
log4j:WARN No appenders could be found for logger (org.springframework.beans.factory.xml.XmlBeanDefinitionReader). 
log4j:WARN Please initialize the log4j system properly. 
User 良葛格 login at 10/28/04 12:52 PM 
使用者 adminsun 于 2004/10/28 下午 12:52 登入

 

分享到:
评论

相关推荐

    Spring中ApplicationContext对事件传递

    ### Spring框架中ApplicationContext的事件传递机制详解 #### 一、引言 在Spring框架中,事件处理机制是一项非常重要的功能,它使得应用可以更加灵活地响应各种系统内部或外部的事件变化。本篇文章将深入探讨...

    Spring中ApplicationContext加载机制

    ApplicationContext 是 Spring 框架中的核心组件之一,负责加载和管理应用程序中的 Bean 对象。在 Web 应用程序中,ApplicationContext 的加载机制是非常重要的, Spring 提供了多种方式来加载 ApplicationContext。...

    Spring获取ApplicationContext对象工具类的实现方法

    Spring框架作为Java EE开发中非常流行和强大的框架之一,为Java应用提供了全面的基础设施支持。在Spring中,ApplicationContext(应用程序上下文)是容器的核心,负责配置和管理应用中对象的生命周期和依赖关系。在...

    Spring框架开发参考中文手册

    手册中还涵盖了Spring框架的最佳实践,包括如何组织项目结构、如何有效利用注解、如何优化性能等方面,这些都是开发者在实际开发中应遵循的原则。 总之,《Spring框架开发参考中文手册》是Spring初学者和进阶者的...

    Spring中ApplicationContext和beanfactory区别.rar

    在Spring框架中,ApplicationContext和BeanFactory是两种不同的bean容器,它们各自有其特性和应用场景,理解二者的区别对于深入学习和使用Spring至关重要。 首先,BeanFactory是Spring中最基础的bean管理容器,它...

    Spring 2.5-applicationContext.xml提示信息的配置

    在Spring框架中,`applicationContext.xml`是应用上下文的核心配置文件,用于定义bean的创建、依赖关系以及各种服务的配置。这篇博文“Spring 2.5 - applicationContext.xml提示信息的配置”主要探讨了如何在Spring ...

    三、Spring源码分析——ApplicationContext

    ApplicationContext是Spring框架中的核心组件之一,它是Bean工厂的高级形式,提供了更多企业级的功能。在这个主题中,我们将深入探讨ApplicationContext的内部机制和关键功能。 ApplicationContext的主要职责是加载...

    android的spring框架

    在Android开发中,Spring框架可能并不像在Java服务器端那样被广泛熟知,但它确实为移动应用提供了一套强大的工具集。Spring for Android是Spring.io针对Android平台推出的一个框架,旨在帮助开发者构建高质量、可...

    Spring框架基础压缩包

    Spring框架是Java企业级应用开发中的核心框架,它为应用程序提供了一个全面的基础设施,使得开发者可以专注于业务逻辑的实现,而无需关注底层的繁琐细节。Spring框架以其模块化的结构、依赖注入(Dependency ...

    spring2.5的applicationContext配置文件

    在Spring框架中,`applicationContext.xml`是核心的配置文件,它定义了bean的实例化、依赖注入、服务的装配以及整个应用上下文的行为。在Spring 2.5版本中,这个配置文件引入了许多增强的功能,提升了开发效率和灵活...

    spring框架jar包

    Spring框架是中国著名的Java企业级应用开发框架,由Rod Johnson在其著作《Expert One-on-One J2EE Design and Development》中首次提出。Spring以其轻量级、模块化和强大的依赖注入特性而闻名,它极大地简化了Java...

    第一次搭建Spring框架

    Spring框架是Java开发中最常用的轻量级框架之一,它的出现极大地简化了企业级应用的开发。本教程将详细讲解如何进行第一次Spring框架的搭建,帮助初学者快速入门。 首先,理解Spring的核心特性至关重要。Spring主要...

    spring的Applicationcontext对事件的监听,实现类似MQ的效果

    在Spring框架中,`ApplicationContext`不仅是一个容器,用于管理Bean的生命周期和依赖注入,它还提供了事件发布和监听的功能。这个特性使得Spring应用能够实现组件间的异步通信,类似于消息队列(MQ)的工作模式。...

    Spring框架web项目实战全代码分享

    在本篇【Spring框架web项目实战全代码分享】中,我们将深入探讨如何使用Spring框架构建一个Java Web项目。首先,我们需要了解Spring的核心概念,它是一个轻量级的、全面的开源框架,主要用于简化企业级应用的开发。...

    spring框架,技术详解及使用指导

    - **Bean Factory**:Bean Factory是Spring框架中最基本的容器,它负责创建Bean实例、配置Bean属性以及管理Bean的生命周期。 - **ApplicationContext**:ApplicationContext是Bean Factory的扩展,提供了更多面向...

    spring框架,技术详解及使用指导

    Spring框架是Java开发领域中最广泛使用的轻量级框架之一,以其强大的依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect-Oriented Programming,简称AOP)能力而著称。本文将深入探讨Spring框架的核心...

    spring 获得applicationcontext公用方法

    在Spring框架中,`ApplicationContext`是一个非常重要的接口,它提供了加载和管理Bean定义,以及获取Bean实例的功能。本文将深入探讨如何在Spring中获取`ApplicationContext`的公用方法,并结合提供的两个文件名`...

    spring框架电子书

    Spring框架是中国Java开发领域中最广泛使用的轻量级框架之一,它以其依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)的核心特性,极大地简化了企业级应用的开发。...

    spring为ApplicationContext提供的3种实现分别为:ClassPathXmlApplicationContext

    在Spring框架中,ApplicationContext是核心接口,它扮演着应用程序上下文的角色,负责管理和提供bean实例。标题提到的"spring为ApplicationContext提供的3种实现",是指Spring框架中用于初始化和管理bean的三种主要...

Global site tag (gtag.js) - Google Analytics