通过注释配置 Spring bean 时,需要从外部源注入属性值。本文解决了如何将属性值注入到使用注释配置的 bean 中的问题。
提供的代码显示了一个 Spring bean,PersonDaoImpl,通过注释配置,而在 Spring XML 文件中没有显式定义。但是,需要将 app.properties 中的属性注入到此 bean 中。
传统上,这可以通过在 XML 文件中定义属性并使用 PropertyPlaceholderConfigurer 从外部文件读取值来实现。然而,由于 bean 是通过注解定义的,这种方法是不可能的。
为了解决这个问题,Spring 在 Spring 3 中提供了使用 EL 支持的解决方案。以下代码演示了这个想法:
@Repository("personDao") public class PersonDaoImpl extends AbstractDaoImpl implements PersonDao { @Value("#{systemProperties.databaseName}") public void setDatabaseName(String dbName) { ... } }
在此示例中,systemProperties 是一个允许访问系统属性的隐式对象。然后用系统属性databaseName的值注入dbName。
类似地,可以使用EL表达式注入其他bean。例如:
@Value("#{strategyBean.databaseKeyGenerator}") public void setKeyGenerator(KeyGenerator kg) { ... }
这里假设strategyBean是一个Spring bean,它的databaseKeyGenerator属性将被注入到当前bean中。
Spring还允许从一个bean注入属性。 Properties 对象:
@Value("#{myProperties['github.oauth.clientId']}") private String githubOauthClientId;
在此示例中,myProperties 对象中的属性被注入到 githubOauthClientId 字段中。
以上是如何将外部源的属性注入到带注释的 Spring Bean 中?的详细内容。更多信息请关注PHP中文网其他相关文章!