在spring中,ApplicationContext 作为BeanFactory接口的派生,不仅具有了BeanFactory的所有功能,还提供了以下功能。(BeanFactory主要负责Bean的初始化,配置和管理)
1。messageSource 国际化消息的访问
2。资源访问 如URL和文件
3。事件传播 如实现了ApplicationListener的接口
4。加载多个上下文,每个上下文负责特定的层次,比如应用的web层
下面,我们来看一下国际化消息的访问,话不多说,直接看代码。
首先是在applicationContext.xml中的配置:
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>local.message</value>
<value>local/sex</value>
</list>
</property>
</bean>
其次是资源文件的位置以及message.properties的配置信息
最后我们来看运行结果:
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext1.xml");
String message = ac.getMessage("name", null, null);
System.out.println(message);
com.mysql.jdbc.Driver
如上所示,我们对国际消息的访问已经完成。
总结:在上述代码中需要注意的几点。
1.bean的id一定要配置成messageSource,否则会出现下面的异常。
org.springframework.context.NoSuchMessageException: No message found under code 'jdbc.driver' for locale 'null'.
2.加载资源文件时,路径下用点和斜杠都是可以的
<value>local.message</value>
<value>local/sex</value>
最后,还有一点就是,如何在controller类中获取国际化消息,在网上找了下,无不是写了大量的代码,不知道有没有通过注解获取国际化消息,可以在下面评论啊。