使用Spring 4 @Configuration
注释,这是我配置属性文件并在我的应用程序中引用的方式:
的src /主/资源/ errors.properties
name.empty.error=name is empty
department.empty.error=department is empty
Java代码配置和用法:
@Configuration
@PropertySource("classpath:errors.properties")
public class Sample {
@Autowired
private Environment env;
public void usage() {
String errorText = env.getProperty("name.empty.error");
}
我想以下列方式指定我的errors.properties的'key':
{0}.empty.error={0} is empty
以便usage()
方法可以调用类似
String errorText1 = env.getProperty("{}.empty.error", "name");
String errorText2 = env.getProperty("{}.empty.error", "department");
怎么做?我记得在Struts错误消息处理中存在类似的东西。
答案 0 :(得分:1)
您需要使用MessageSource
,这是一个解析消息的接口。 ResourceBundleMessageSource是MessageSource
实现,可以从属性文件中读取。
你需要配置它(我还没有尝试编译源代码)
@Bean
MessageSource messageSource() {
ResourceBundleMessageSource source=new ResourceBundleMessageSource();
source.setBasenames("messages");
return source;
}
您必须将其连接到您要调用的代码中:
String errorText1 = source.getMessage("empty.error", "name", Locale.US);
并在您的消息文件中,您将拥有:
empty.error = {0} is empty
作为奖励,您的应用程序将为内化做好准备。
答案 1 :(得分:0)
我认为你可以做这样的事情,
String errorText1 = env.getProperty(String.format("%s.empty.error", "name"));
String errorText2 = env.getProperty(String.format("%s.empty.error", "department"));
编辑:
如果您仅使用此属性从属性文件中获取这些特定值,则没有任何意义。
但是如果这些值是在运行时决定的(假设所有这些属性都在属性文件中可用)。
你可以使用,
String errorText1 = env.getProperty(String.format("%s.empty.error", dynamic-property-value-goes-here));
答案 2 :(得分:0)
我们可以使用MessageSource
接口来解析消息。
ResourceBundleMessageSource
是MessageSource
实现,可以从属性文件中读取。
然后调用getMessage()
方法。
String org.springframework.context.MessageSource.getMessage(String code, Object[] args, String defaultMessage, Locale locale)
messages.properties 文件[src / main / resources /]
empty.error = {0} is empty
Spring-config文件
<bean id="messageSource1" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<value>messages</value>
</property>
</bean>
Java类中的用法:
@Autowired
private MessageSource messageSource1;
public MessageSource getMessageSource1() {
return messageSource1;
}
public void setMessageSource1(MessageSource messageSource1) {
this.messageSource1 = messageSource1;
}
// Java类方法中的确切用法
String [] params = new String[]{"value1"};
log.info(this.messageSource1.getMessage("empty.error", params ,"", Locale.US));