说是原创其实也算是摘抄,Spring的学习是从《Spring解密》那本书中的提取出来的一些自认为能用的到的内容,该书是以Spring2.5为基础讲解的,内容讲的很扎实,假如你对Java语言的编写能够灵活运用,那么理解此书应该不成问题,要不然会有种看不下去的感觉,接下来我会陆续更新该篇文章的内容,把一些书中的讲解的重要内容,和自己的应用感受都写一下。目的一个学会应用Spring。
No1.关于国际化资源的问题。
首先关于资源文件的就是一个普通的.properties文件,该文件的路径需要自己来定,例如我把资源文件放进了包名为com.app.resources下面。而且资源文件名称是以messages开头的。那么我们在给MessageResource实现类(一般应用的就是ResourceBundleMessageResource)给其属性值basename设定为com.app.resources.messages,这些配置均在配置文件之中
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd"
>
<!--文件资源加载-->
<bean id="test1" class="com.app.bussiness.TestResource" p:source="file:src/content/test.txt"></bean>
<!--国家化资源加载-->
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource" p:basename="i18Resources.messages"></bean>
</beans>
三种MessageResource实现类的应用,StaticMessageResource,ResoruceBundleMessageResoruce,ReloadableResourceBundleMessageSource
照书上的说法是 第一个类是对MessageSource的简单实现,可以通过编程的方式添加多个条目,多用于测试,不用于生产
第二个类是对AbstractMessageSource的行为进行了扩展。在实际应用之中应用的最多的就是该类,
第三个类该类用用cacheSeconds属性,该属性可以根据制定时间段加载并刷新指定的属性文件。
StaticMessageResource resource=new StaticMessageResource()
resoruce.addMessage("name",Locale.US,"nameValue");
resoruces.getMessage("name",null,Locale.US);
ResourceBundleMessageResource resoruce=new ResourceBundleMessageResource();
resource.setBasename(new String[]{"conf/messages"});//从Classpath路径下加载
ReloadableMessageBundleMessageResource reloadMsg=new ReloadableMessageBundleMessageResource();
reloadMsg.setBasename("conf/msg");//从文件系统之中加载
Spring最基础的家在资源是普通的文件加载,Resources就是实现该功能的接口
但是在实际应用的时候我们会采用ResourceLoader resource(PS:当然这个是最基础的,我们实际也会采用ResourceLoaderAware);实际的应用和上面的代码差不多。当然这里面有一些问题,就是你要查找的路径下的文件路径一定要存在,文件的存在与否决定你在调用getFile()或者getInputStream()是否成功。还有想新建文件可以通过上述类getFile方法成功之后在调用getpath(),该类本身也有getpath()和getUri()方法。这样可以用来在同一目录下创建新的文件。