您需要区分应用程序属性(配置)和本地化消息。两者都使用 JAVA 属性文件,但它们的用途不同,处理方式也不同。
注意:我在下面的示例中使用基于 Java 的 Spring 配置。配置也可以很容易地用 XML 进行。只需检查 Spring 的JavaDoc和参考文档。
应用程序属性
应用程序属性应作为应用程序上下文中的属性源加载。这可以通过类上@PropertySource
的注释来完成@Configuration
:
@Configuration
@PropertySource("classpath:default-config.properties")
public class MyConfig {
@Bean
public static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
}
@Value
然后你可以使用注解注入属性:
@Value("${my.config.property}")
private String myProperty;
本地化消息
本地化消息有点不同。消息作为资源包加载,并且有一个特殊的解析过程来获取指定语言环境的正确翻译消息。
在 Spring 中,这些消息由MessageSource
s处理。例如,您可以通过以下方式定义自己的ReloadableResourceBundleMessageSource
:
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("/WEB-INF/messages/messages");
return messageSource;
}
如果让 Spring 注入,则可以从 bean 访问这些消息MessageSource
:
@Autowired
private MessageSource messageSource;
public void myMethod() {
messageSource.getMessage("my.translation.code", null, LocaleContextHolder.getLocale());
}
您可以使用<spring:message>
标记翻译 JSP 中的消息:
<spring:message code="my.translation.code" />