2

尽管我的 Configuration 类中的属性名称错误,但 Spring 不会抛出异常。日志显示找不到密钥。

2012-06-17 05:26:49,545 DEBUG | main | o.s.core.env.PropertySourcesPropertyResolver          | Could not find key 'pegaso.cfdiRequest' in any property source. Returning [null] 

我在我的配置类的环境类中使用该属性

@Configuration
@PropertySource("classpath:application.properties")
public class AppConfig {

   @Autowired
  Environment env;

@Bean
public FesaBean fesaBean() {
   FesaBean fesaBean = new FesaBean();  
   fesaBean.setMyProperty(env.getProperty("pegaso.cfdiRequest"));
   return fesaBean;
}

pegaso.cfdiRequest在 application.properties 中不存在。不过,我没有得到例外。

4

2 回答 2

4
env.getRequiredProperty("propertyName")

Environment 实现了 PropertyResolver ,它具有这样的方法Environment.getRequiredProperty()解决了这个问题。如果未找到该属性,则抛出 java.lang.IllegalStateException。

于 2012-06-19T23:58:45.343 回答
1

根据Environment的 API ,它为无法解析的值返回 null,因此只需在您的特定情况下进行 null 检查:

if (env.getProperty("pegaso.cfdiRequest")==null)... // variable not resolved
于 2012-06-17T11:43:27.367 回答