Spring中的属性,在Java应用程序中访问

时间:2012-03-23 08:59:27

标签: java spring properties

我有这样的属性设置:

<context:property-placeholder
        location="file:${catalina.home}/conf/my.properties"
        ignore-unresolvable="true" />

然后在应用程序上下文(特别是app.email)中引用它们,如下所示:

<bean id="alertMailMessage" class="org.springframework.mail.SimpleMailMessage">
  <property name="to">
    <value>${app.email}</value>
  </property>
</bean>

然而,当我尝试在实际的pojo中访问该属性时,不是一个spring bean - 实际上是一个注释为hibernate实体(而不是alertMailMessage bean)的pojo,它将返回null?

@Value("${app.email}")
private String defaultEmailAddress;

我想在其他地方使用属性设置“app.email”的值,除了alertMailMessage,最好的方法是什么? (alertMailMessage工作正常btw)

1 个答案:

答案 0 :(得分:2)

你不能在hibernate实体中设置它,因为hibernate实体不是由spring管理的。

在spring服务中使用@Value注释创建hibernate实体,并在需要时手动设置。但是在数据库中存储默认值看起来很奇怪,所以重新考虑一下。

作为旁注:如果使用aspectJ和@Configurable,你可以拥有由spring管理的休眠实体,但这可能会使事情变得不必要。