如果属性不存在,则Spring 3.1 @PropertySources不会抛出异常

时间:2012-06-17 10:33:09

标签: spring

虽然我的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] 

我在Configuraton Class

中的Environment类中使用该属性
@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;
}
application.properties中不存在

pegaso.cfdiRequest 。不过,我没有得到例外。

2 个答案:

答案 0 :(得分:4)

env.getRequiredProperty("propertyName")

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

答案 1 :(得分:1)

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

if (env.getProperty("pegaso.cfdiRequest")==null)... // variable not resolved