首页  >  文章  >  Java  >  如何将外部源的属性注入到带注释的 Spring Bean 中?

如何将外部源的属性注入到带注释的 Spring Bean 中?

DDD
DDD原创
2024-11-13 14:01:02590浏览

How to Inject Properties from External Sources into Annotated Spring Beans?

将外部属性注入带注释的 Spring Bean

通过注释配置 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn