- 浏览: 1566094 次
文章分类
- 全部博客 (557)
- Spring 3 系列 (26)
- Spring 3 (4)
- oracle (7)
- java (6)
- css3 (1)
- andorid (11)
- IE中页面不居中 (1)
- crm (1)
- ibatis (1)
- jdbc (1)
- javacore (1)
- IT 生活 (3)
- 创业的简单感受 (1)
- web前端 (1)
- Java静态代理 (1)
- pdf (6)
- 模拟 (1)
- 数论 (1)
- ACM_POJ (2)
- C/C++求职面试必备考点 (1)
- 学习Android遇到的错误 (1)
- 嵌入式学习 (1)
- magento付费模板! (1)
- PHP (1)
- Oracle 开发 (1)
- MSSQL (1)
- javascript (6)
- 随感随想 (1)
- RobotFramework (1)
- Ajax (2)
- 数据库复习 (1)
- Java Web (1)
- Way (1)
- eclipse (1)
- 分布式 (1)
- 【ASP.NET开发】 (1)
- 搜索 (1)
- UML建模 (1)
- ANDROID (2)
- 编程技巧 (1)
- 程序员 (2)
- C语言相关 (1)
- Struts2 (1)
- 精品下载资源推荐 (1)
- CUDA (1)
- MFC (1)
- 游戏编程 (1)
- oracle数据库 (1)
- 暴力求解--哈希表 (1)
- 个人文章 (1)
- 最小生成树 (1)
- linux 基础 (1)
- Flex (1)
- Linux (1)
- UML (1)
- 云计算 (1)
- android ListView (1)
- java数据库连接池 (1)
- cxf (1)
- javas (0)
- jquery (2)
最新评论
-
lj杰:
您好,最近项目涉及这这方面的技术,能分享下源码不,小弟非常感谢 ...
Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能 -
成大大的:
Android自动化测试从入门到精通网盘地址:https:// ...
4种手机自动化测试框架介绍 -
u012944589:
[size=xx-large][size=xx-small][ ...
Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能 -
stone520520:
同求源码,这几天正想研究一下视频的相关功能mail: 1862 ...
Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能 -
zhen8023wan:
源代码可以发给我一份吗?谢谢!qq邮箱:1796482787@ ...
Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能
ontext的核心作用是ApplicationContext接口,这是由BeanFactory接口派生而来。同时,context还提供了以下的功能:
1) MessageSource,提供国际化的消息访问
2)资源访问,如URL和文件
3)事件传播,实现了ApplicationListener接口的bean
4)惯入多个上文,使得每一个上下文都专注于一个特定的层次,比如应用的web层.
1.MessageSource
ApplicationContext
接口扩展了MessageSource
接口,因而提供了消息处理的功能(i18n或者国际化)。与HierarchicalMessageSource
一起使用,它还能够处理嵌套的消息,这些是Spring提供的处理消息的基本接口。让我们快速浏览一下它所定义的方法:
-
String getMessage(String code, Object[] args, String default, Locale loc):用来从
MessageSource
获取消息的基本方法。如果在指定的locale中没有找到消息,则使用默认的消息。args中的参数将使用标准类库中的MessageFormat
来作消息中替换值。 -
String getMessage(String code, Object[] args, Locale loc):本质上和上一个方法相同,其区别在:没有指定默认值,如果没找到消息,会抛出一个
NoSuchMessageException
异常。 -
String getMessage(MessageSourceResolvable resolvable, Locale locale)
:上面方法中所使用的属性都封装到一个MessageSourceResolvable
实现中,而本方法可以指定MessageSourceResolvable
实现。
当一个ApplicationContext
被加载时,它会自动在context中查找已定义为MessageSource
类型的bean。此bean的名称须为messageSource
。如果找到,那么所有对上述方法的调用将被委托给该bean。否则ApplicationContext
会在其父类中查找是否含有同名的bean。如果有,就把它作为MessageSource
。如果它最终没有找到任何的消息源,一个空的StaticMessageSource
将会被实例化,使它能够接受上述方法的调用。
Spring目前提供了两个MessageSource
的实现:ResourceBundleMessageSource
和StaticMessageSource
。它们都继承NestingMessageSource
以便能够处理嵌套的消息。StaticMessageSource
很少被使用,但能以编程的方式向消息源添加消息。ResourceBundleMessageSource
会用得更多一些,为此提供了一下示例:
- <beans>
- <bean id="messageSource"
- class ="org.springframework.context.support.ResourceBundleMessageSource" >
- <property name="basenames" >
- <list>
- <value>format</value>
- <value>exceptions</value>
- <value>windows</value>
- </list>
- </property>
- </bean>
- </beans>
这段配置文件告诉我们资源文件加载的方式,它可以从format.properties,exceptions.properties,windows.properties三个文件里分别加载我们需要的资源,且它们是按配置文件夹的顺序加载的。
我们可以分别往三个文件里加
- # in 'format.properties'
- message=Alligators rock format!
- # in 'exceptions.properties'
- argument.required=The {0 } argument is required.
... ...
测试代码如下:
- public static void main(String[] args) {
- MessageSource resources = new ClassPathXmlApplicationContext("beans.xml" );
- String message = resources.getMessage("message" , null , "Default" , null );
- System.out.println(message);
- }
打印的结果就是:
对于第二个参数可以用如下方法测试:
- MessageSource resources = new ClassPathXmlApplicationContext("bean.xml" );
- String message = resources.getMessage("argument.required" ,
- new Object [] {"userDao" }, "Required" , Locale.UK);
- System.out.println(message);
2.资源访问
如:
可以直接访问资源文件
3.事件传播
ApplicationContext基于观察者模式提供了对Bean的事件传播功能,通过Application.publicEvent访问方法,可以将事件通知系统内所有的ApplicationListener
事件传播的一个典型应用是,当Bean中的操作发生异常(如数据库连接失败),则通过事件传播
机制通知异常监听器进行处理
ApplicationListener是由在配置文件中配置我们感兴趣的监听,如这里我们配置两个监听ActionListener1和ActionListener1它们的配置文件为:
- <bean id="action" class ="org.spring.LoginAction" /> //登录动作
- <bean id="listener1" class ="org.spring.ActionListener1" />
- <bean id="listener2" class ="org.spring.ActionListener2" />
类为:
- public class ActionListener1 implements ApplicationListener {
- public void onApplicationEvent(ApplicationEvent event) {
- if (event instanceof ActionEvent) {
- System.out.println("ActionListener1:" +event.toString());
- }
- }
- }
- public class ActionListener2 implements ApplicationListener {
- public void onApplicationEvent(ApplicationEvent event) {
- if (event instanceof ActionEvent) {
- System.out.println("ActionListener2:" +event.toString());
- }
- }
- }
定义登录事件ActionEvent:
- public class ActionEvent extends ApplicationEvent {
- public ActionEvent(Object source) {
- super ("actionEvent " +source);
- }
- }
而登录动作的具体实现它要实现接口 ApplicationContextAware
- public class LoginAction implements ApplicationContextAware {
- private ApplicationContext applicationContext;
- public void setApplicationContext(ApplicationContext applicationContext)
- throws BeansException {
- this .applicationContext = applicationContext;
- }
- public int login(String username, String password) {
- ActionEvent event = new ActionEvent(username);
- this .applicationContext.publishEvent(event);
- return 0 ;
- }
- public static void main(String[] args) {
- ApplicationContext ctx=new
- FileSystemXmlApplicationContext("WebRoot/WEB-INF/bean.xml" );
- LoginAction action = (LoginAction)ctx.getBean("action" );
- action.login("hell" ,"hell" );
- }
- }
结果当我们login时,就会通过acclicationContext来通知当前有的监听,使所有监听者知道一下。到于监听者对于这个登录事件是否感兴趣,那是他们自个的事了。。。
4.多个上下文:
以下摘自(夏昕)
上面的示例中,ApplicationContext均通过编码加载。对于Web应用,Spring提供了可配置的
ApplicationContext加载机制。
加载器目前有两种选择:ContextLoaderListener和ContextLoaderServlet。这两者在功能上完全
等同,只是一个是基于Servlet2.3版本中新引入的Listener接口实现,而另一个基于Servlet接口实现。
开发中可根据目标Web容器的实际情况进行选择。
配置非常简单,在web.xml中增加:
- <listener>
- <listener-class >
- org.springframework.web.context.ContextLoaderListener
- </listener-class >
- </listener>
或者
- <servlet>
- <servlet-name>context</servlet-name>
- <servlet-class >
- org.springframework.web.context.ContextLoaderServlet
- </servlet-class >
- <load-on-startup>1 </load-on-startup>
- </servlet>
通过以上配置,Web容器会自动加载/WEB-INF/applicationContext.xml初始化
ApplicationContext实例,如果需要指定配置文件位置,可通过context-param加以指定:
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>/WEB-INF/myApplicationContext.xml</param-value>
- </context-param>
配置完成之后可通过 WebApplicationContextUtils.getWebApplicationContext
方法在Web应用中获取ApplicationContext引用。
发表评论
-
Spring Batch学习(一)介绍
2015-01-08 17:17 8450为什么我们需要批处理? 我们不会总是想要立即得到需要的信 ... -
spring包详解
2012-04-22 14:58 1720下载的spring包中文件及各种包众多,在项目中往往只有 ... -
我的spring学习笔记2-IoC(反向控制 依赖注入)
2012-04-10 07:50 2776IoC(反向控制 依赖注入)这是Spring提出来了,这也是S ... -
我的spring学习笔记1-spring 简介
2012-04-10 07:49 21821.1. 概览 ... -
我的spring学习笔记15-容器扩展点之PropertyOverrideConfigurer
2012-04-22 14:55 1896PropertyOverrideConfigurer类似于Pr ... -
我的spring学习笔记14-容器扩展点之PropertyPlaceholderConfigurer
2012-04-22 14:55 1870PropertyPlaceholderConfigurer是个 ... -
我的spring学习笔记10-轻量级_Spring框架
2012-04-14 21:59 1997一、问题提问: ... -
我的spring学习笔记9-Spring使用工厂方法实例化Bean的注意点
2012-04-14 21:59 1582方法一: <bean id="m ... -
我的spring学习笔记8-Spring中Bean的实例化
2012-04-14 21:59 1500在Spring中要实例化一个Bean有几种方法: 1、最常用 ... -
我的spring学习笔记7-Spring的Bean配置文件给Bean定义别名
2012-04-14 21:59 3040本文介绍如何给Spring的Bean配置文件的Bean定义别名 ... -
我的spring学习笔记6-ApplicationContext实例化的参数兼容思想
2012-04-14 21:59 1511ApplicationContext能读取多个Bean定义文件 ... -
我的spring学习笔记5-如何使用ApplicationContext替换BeanFactory
2012-04-12 22:03 1909如何使用ApplicationContext替换BeanFac ... -
我的spring学习笔记3-BeanFactory 详解
2012-04-12 22:03 19811、BeanFactory是 ... -
我的spring学习笔记2-IoC(反向控制 依赖注入)
2012-04-12 22:03 1232IoC(反向控制 依赖注入)这是Spring提出来了,这也是S ... -
我的spring学习笔记-spring 简介
2012-04-12 22:03 15941.1. 概览 ... -
Spring中事件处理de小技巧
2012-04-08 12:01 1618Spring 中提供一些Aware相关de接口,Be ... -
关于使用Spring导致c3p0数据库死锁问题
2012-04-08 11:59 6509这个问题我实在是为整个 springsource 的员工蒙羞 ... -
SPRING多数据源切换的问题和解决方法
2012-04-08 11:56 4520在应用中,需要热切换数据源。但发现如下问题: J ... -
再析在spring框架中解决多数据源的问题
2012-04-08 11:52 1757在前面我写了《如何在 spring 框架中解决 ... -
如何在spring框架中解决多数据源的问题
2012-04-08 11:50 2974今天碰见Spring + 多个数 ...
相关推荐
### Spring学习笔记知识点详解 #### 一、Spring框架概述 **Spring** 是一个开源的、分层的企业级应用开发框架,旨在简化Java EE应用程序的开发。它的主要目标是提高开发效率,减少耦合度,并提供一种更为简洁的...
### Spring学习笔记知识点详解 #### 一、Spring框架概述 **1.1 什么是Spring** Spring框架是一个开源的轻量级应用框架,主要用于简化企业级应用程序的开发过程。它的核心特性在于提供了一种灵活的方式来组织和...
### Spring学习笔记(最新版) #### 一、Spring框架简介 Spring框架是一个广泛使用的轻量级企业级应用框架,它提供了全面的解决方案来构建复杂的Java应用程序。Spring的核心特性包括依赖注入(Dependency Injection,...
### Spring学习笔记1 #### 一、Spring框架简介与IOC概念 **Spring**是一个开源的Java平台框架,它提供了一种全面的编程模型,并通过一系列的功能模块支持企业级应用程序开发。Spring的核心特性包括依赖注入...
### Spring学习笔记知识点详解 #### 一、Spring学习模块概览 Spring框架作为一个全面而强大的企业级应用开发框架,其内部包含多个模块,这些模块分别针对不同的应用场景和技术领域进行了优化设计。了解这些模块有...
- **实现方式**:通过Spring容器(如ApplicationContext或BeanFactory)来管理对象的生命周期及其依赖关系。 - **好处**:提高了代码的可测试性、降低了模块间的耦合度。 #### 3. Spring配置 Spring框架允许开发者...
### Spring框架核心知识点详解:Bean生命周期与AOP深入解析 #### Bean生命周期管理 Spring框架中的Bean生命周期管理是其核心功能之一,它通过一系列的接口和类来实现对Bean的创建、初始化、销毁等过程的控制。以下...
### Spring2.5 学习笔记详解 #### 一、Spring 框架简介 Spring 是一个开源的轻量级 Java 开发框架,主要用于简化企业级应用的开发工作。Spring 提供了一系列强大的功能,比如控制反转 (Inversion of Control, IOC)...
### Spring 2.5 学习笔记知识点梳理 #### 第一课:面向抽象编程 - **定义**:面向抽象编程是一种编程范式,强调通过抽象类或接口来设计程序结构,减少对具体实现的依赖。 - **优势**: - 提高了系统的可维护性与...
### Spring2.5.6 学习笔记精粹解析 #### 一、Spring框架环境搭建与JAR包配置 在开始深入Spring框架的学习之前,首先需要确保开发环境正确配置Spring框架。按照“传智播客Spring2.5.6学习笔记最新整理”的指引,...
### Spring学习笔记:深入理解Spring框架的核心特性与应用 #### Spring框架概述 Spring框架是一个开源、轻量级的Java开发框架,旨在简化企业级应用程序的开发。它通过一系列的模块化设计,提供了全面的支持,包括...
### Spring in Action 学习笔记知识点总结 #### 1. Spring 框架基础 ##### 1.1 Spring 概述 - **轻量级**:Spring 的“轻量级”主要体现在其对资源消耗较少,同时具备低入侵性。在基于 Spring 开发的应用中,业务...
### Spring框架知识点详解 #### 一、Spring框架基础回顾与扩展 ##### 1. Spring框架基本概念 **Spring**是一个开源框架,最初由Rod Johnson创建,目的是为了简化企业级Java应用开发。Spring提供了完整的轻量级...
### Java学习笔记2:Spring框架基础 #### 一、Spring框架简介 Spring 是一个开源的轻量级 Java 开发框架,旨在简化企业级应用程序的开发。它提供了许多强大的功能,如依赖注入(Dependency Injection, DI)、面向...
### 传智播客 Spring 完全文档 笔记总结 #### 一、Spring入门 ##### 1.1 Spring简介 - **定义**:Spring 是一个开源的控制反转(Inversion of Control, IoC)和面向切面(Aspect Oriented Programming, AOP)的...