在应用程序中,有多个属性文件用于管理异常消息,警报和其他一些文本,这些文件如下: - core-message.properties - databaseException.properties ......
服务层中的可能是数据库调用发生,数据库返回存在于属性文件中的一个键,我想获取值并将异常消息提升到用户界面层。
如果我知道wich属性文件中的密钥代码将是这样的:
@Value("#{core['theExceptionKey']}")
public String excpetionMessage;
private void myMethod() {
throw new ExceptionClass(exceptionMessage);
}
我认为spring可以做到这一点,因为当我使用spring:jsp文件中的消息标签时,spring不知道女巫文件中的密钥,但是它正确地加载了消息。
答案 0 :(得分:1)
您可以使用Spring Environment
抽象。
首先,您需要将属性源添加到Java配置文件
@Configuration
@PropertySource("classpath:/com/mypacakge/core-message.properties")
public class AppConfig {
或者,如果您有多个属性文件
@Configuration
@PropertySources({
@PropertySource("classpath:core-message.properties"),
@PropertySource("classpath:database.properties")
})
public class AppConfig {
将PropertySourceConfigurer
添加到Java配置文件
@Bean
public static PropertySourcesPlaceholderConfigurer placeHolderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
现在让我们在core-message.properties
中说明您有以下数据
message.name=Hello
您可以通过自动装配Environment
抽象然后调用env.getProperty()
@Autowired
Environment env;
public void m1(){
String message = env.getProperty("message.name")` // will return Hello
Environment
object提供了配置属性源和解析属性的接口。它提供了从各种源读取的便利:属性文件,系统环境变量,JVM系统属性,servlet上下文参数等,这非常有用。例如:
environment.getSystemProperties().put("message", "Hello");
System.getProperties().put("message", "Hello");
environment.getSystemProperties().get("message"); // retrieve property
environment.getPropertySources() // allows manipulation of Properties objects
答案 1 :(得分:0)
要以编程方式获取密钥的值,您可以使用以下命令:
@Autowired
private Environment env;
...
String something = env.getProperty("property.key.something");