首页 >Java >java教程 >如何在Spring中配置注解的Bean中注入属性值?

如何在Spring中配置注解的Bean中注入属性值?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-09 05:06:02548浏览

How Can I Inject Property Values into Beans Configured with Annotations in Spring?

在 Spring 中使用注解配置的 Bean 中的属性注入

在 Spring 中,Bean 通常使用注解进行配置,以简化依赖注入和类路径扫描。但是,如果您需要从外部源(例如属性文件)注入属性值,您可能会遇到挑战。

问题陈述

考虑一个注释为 Spring bean 的 Java 类:

@Repository("personDao")
public class PersonDaoImpl extends AbstractDaoImpl implements PersonDao {
    // Implementation omitted
}

此 bean 是通过注释配置的,您希望将 app.properties 文件中的属性值注入其中。然而,由于该 bean 未在 Spring XML 文件中声明,因此通常的 不能使用元素方法。

使用 EL 支持进行属性注入

Spring 提供 EL(表达式语言)支持,可以将属性直接注入到带注释的 bean 中。为此:

  1. 将以下依赖项添加到项目的 pom.xml 中:
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.3.23</version>
</dependency>
  1. 使用 @Value 注解注入属性值:
public class PersonDaoImpl extends AbstractDaoImpl implements PersonDao {
    @Value("${results.max}")
    private int maxResults;
    // Implementation omitted
}

从属性注入属性的示例Object

您还可以使用 @Value 从 Properties 对象注入属性:

@Autowired
private Properties myProperties;
@Value("#{myProperties['github.oauth.clientId']}")
private String githubOauthClientId;

其他信息

  • systemProperties 对象提供对系统属性的访问。
  • @Value 也可以应用于字段直接注入。
  • 了解更多详情请参考这篇博文:[Spring中使用@Value和EL支持进行属性注入](https://www.baeldung.com/spring-property-injection-value)。

以上是如何在Spring中配置注解的Bean中注入属性值?的详细内容。更多信息请关注PHP中文网其他相关文章!

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