- 浏览: 65909 次
- 来自: 北京
文章分类
最新评论
-
love_miaohong:
tomcat工作原理(第二章)A Simple Servlet Container -
dreamkyh:
好犀利的测试驱动啊,vo我还是不太明白,能帮忙解释下嘛
测试驱动开发(第二节)
(一)国际化:
Spring在国际化方面提供了良好的支持,ApplicationContext继承了org.springframework.context.MessageResource接口,使用getMessage()的各个方法来获取信息资源,从而是实现国际化的目的。
当ApplicationContext被加载的时候,它会自动查找定义在XML中定义的messageResource,spring约定这个bean必须被定义为messageSource。开发人员可以通过org.springframework.context.support.ResourcebundleMessageSource来取得国际化信息。
示例代码:
配置文件:
<!-- 在以下代码中定义了,定义了一个id为messageSource的Bean,
这个Bean的来源是org.springframework.context.support.ResourceBundleMessageSource,设定Bean的basename
为messages,意味着存放信息资源文件的文档的名称为messages.properties 或者 messages.class
-->
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename">
<!-- 国际化支持的定义在文件名为messages的文件中 -->
<value>messages</value>
</property>
</bean>
test方法:
ApplicationContext context = new FileSystemXmlApplicationContext("classpath:config.xml");
//设定当前时间
Object[] objects = new Object[]{"HelloWorld",Calendar.getInstance().getTime()};
//国际化支持
String msg = context.getMessage("HelloWorld", objects,Locale.CHINA);
System.out.println("msg=========="+msg);
编写messages.properties配置文件:
##{0}和{1}表示,当外部传入参数时,传入值存放的位置
HelloWorld = 问候语:{0} 问候时间:{1}
运行Test程序,发现输出的内容与要求的不一致,这是Java本身在转码的过程中出现了问题,可以通过转码来解决。
1、将messages.properties拷贝到c盘根目录下,然后在windows命令行窗口输入如下命令:
C:\> native2ascii messages.properties messages.txt
这时在c盘根目录下会产生一个messages.txt文件、
将messages.txt中的内容复制到messages.properties中,覆盖原来的内容。
运行即可。
如果想提供对英语支持,可以加入messages_en_US.properties,
文件内容为:HelloWorld=Language {0} Time {1}
然后修改测试程序,将Locale换为US即可。
(二)资源访问:
Spring提供了对资源文件的存取,ApplicationContext继承了ResourceLoader接口,开发人员可以使用getResource()方法指定资源文件的URL来存取。
1、通过虚拟路径来存取。如果资源文件在classpath下,可以通过如下方式来获取:
ApplicationContext context = new FileSystemXmlApplicationContext("classpath:config.xml");
Resource res = context.getResource("classpath:messages.properties"); //classpath是spring约定的URL的虚拟路径。
2、通过实际路径来存取:
指定标准的url,如“file:”或“http:”
ApplicationContext context = new FileSystemXmlApplicationContext("classpath:config.xml");
Resource res = context.getResource("file:d:/eclipse/workspace/myApp/WEB-INF/src/messages.properties");
3、通过相对路径来存取
ApplicationContext context = new FileSystemXmlApplicationContext("classpath:config.xml");
Resource res = context.getResource("WEB-INF/src/messages.properties");
当通过ApplicationContext获取一个Resource后,就可以通过getFile来来存取资源文件的内容了,可以通过exists()来检查资源文件是否存在;通过isOpen()检查资源文件是否被打开;通过getURL()返回资源文件的URL。
(三)事件传递
ApplicationContext的事件处理是通过ApplicationEvent和ApplicationListener的接口来提供的。通过ApplicationContext的publishEvent()方法来通知ApplicationListener.
一个输出日志信息的示例:
(1)一个继承ApplicationEvent的类:
package com.spring.event;
import org.springframework.context.ApplicationEvent;
public class LogEvent extends ApplicationEvent {
public LogEvent(Object msg) {
super(msg);
}
}
(2)定义一个实现ApplicationListener的类:
package com.spring.event;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
public class LogListener implements ApplicationListener{
public void onApplicationEvent(ApplicationEvent event) {
if(event instanceof LogEvent) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//
sdf.setLenient(false);
String currentDate = sdf.format(new Date());
System.out.println("currDate=="+currentDate);
}
}
}
(3)一个实现ApplicationContextAware的类Log:
package com.spring.event;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
public class Log implements ApplicationContextAware {
private ApplicationContext applicationContext;
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
this.applicationContext = applicationContext;
}
public int log(String log) {
LogEvent logEvent = new LogEvent(log);
this.applicationContext.publishEvent(logEvent);
return 0;
}
}
(4)配置文件:
<bean id="log" class="com.spring.event.Log"/>
<bean id="listener" class="com.spring.event.LogListener"/>
(5)测试程序:
ApplicationContext context = new FileSystemXmlApplicationContext("classpath:config.xml");
Log log = (Log)context.getBean("log");
log.log("gf");
上述代码只是为了说明Spring的事件传递功能, 其实利用Spring 的AOP实现日志输出会更好。
发表评论
-
CharacterEncodingFilter作用
2012-06-28 15:41 0CharacterEncodingFilter作用 ... -
SSH中 Spring quartz定时器的用法
2012-06-28 11:18 0一,首先下载quartz-1.6.0.jar架包,到lib目录 ... -
Spring对持久层的封装
2012-06-07 17:33 01、使用Spring自带的DriverManagerDataS ... -
Bean的生命周期
2012-05-31 17:27 0在spring中,一个bean的生命周期包括bean的定义、b ... -
Unicome KJava平台炫铃订购系统
2012-05-21 11:44 0SSH项目中Spring、Hibernate 1、Sp ... -
Spring学习(六)管理Bean
2012-04-24 15:04 753(一)使用BeanWrapper管理Bean: 在org.s ... -
Spring学习(自动装配和依赖检查)
2012-04-23 18:33 0一般情况下,自动装配和依赖检查结合使用。 -
Spring学习(四)
2012-04-23 18:21 669在Spring中使用Bean的方式有三种: (1)BeanWr ... -
Spring学习(三)Spring的核心容器
2012-04-16 17:13 588Spring的核心是IOC,其目的是提供一种无侵入式的框架。 -
Spring学习(二)依赖注入的三种方式
2012-04-16 16:08 696依赖注入的意义:让组件依赖于抽象,当组件要与其他实际对象发生依 ... -
Spring学习(一)一个简单的Spring应用程序
2012-04-13 17:45 8481、在MyEclipse中创建一个web project,命名 ... -
SSH框架搭建过程解析(以自己的项目出发)
2012-04-06 15:59 0(1)Hibernate 对于dao层,首先是有hiberna ... -
Java缓存实现与Spring托管(一)
2012-03-06 15:50 599EHCache是一个轻量级的、快速的、易于使用的、进程内的 ...
相关推荐
Spring中ApplicationContext和beanfactory区别.rar
BeanFactory是用于访问Spring Bean容器的根接口,是一个单纯的Bean工厂,也就是常说的IOC容器的顶层定义,各种IOC容器是在其基础上为了满
Spring的IoC容器之BeanFactory[定义].pdf
NULL 博文链接:https://lgd-java2eye.iteye.com/blog/756599
Spring的BeanFactory的接口的中文解释
NULL 博文链接:https://ylxy3058.iteye.com/blog/2223489
spring之beanfactory 的一些基本知识与其关系使用
spring3中实例化BeanFactory的3中方法
对BeanFactory的相关所有接口的功能的关键点进行了总结描述,中文版本
Spring核心学习IOC部分:从最简单的BeanFactory开始一步步完善类似Spring的功能
主要介绍了简单了解Spring中BeanFactory与FactoryBean的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
针对Spring框架的主要功能以及开发者们遇到最多的问 题,首先介绍问题的相关背景,然后逐条进行深度剖析,最后通过分析来引入Spring框架可以提供的最佳解决方案。虽言Spring,却不局限于 Spring! 本书目录 目录 ...
Spring注解驱动开发第41讲——Spring IOC容器创建源码解析(一)之BeanFactory的创建以及预准备工作(合起来整个过程)
NULL 博文链接:https://bjameng.iteye.com/blog/1468057
提供Spring框架的基本功能,其主要组件是BeanFactory,是工厂模式的实现。 Spring 上下文。向Spring 框架提供上下文信息,包括企业服务,如 JNDI、EJB、电子邮件、国际化、校验和调度等。 Spring AOP。通过配置管理...
主要给大家介绍了关于Spring中BeanFactory与FactoryBean接口的区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Spring具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
本篇文章主要介绍了Spring中BeanFactory解析bean详解 ,详细的介绍了使用BeanFactory对bean进行解析的实例,有兴趣的可以了解一下。
NULL 博文链接:https://364232252.iteye.com/blog/2369489
最后,编写测试程序 HelloApp,使用 Spring 的 BeanFactory 和 XmlBeanFactory 对象来加载配置文件和实例化 Bean。 Spring 开发环境搭建完成后,可以进行 Spring 项目的开发和测试。该环境提供了一个强大且灵活的...
Spring学习,简单理解,帮助大家学习。 Spring由Rod Johnson创建的,开源的轻量级Java开发框架。 于2003年兴起,2016年最高版本是4.3. 有两个目标:让现有的技术更易于使用 促进良好的编程习惯 由7个模块...