Spring开关属性值

时间:2017-06-07 12:51:49

标签: java spring dependency-injection spring-el

假设我有一个属性文件,其中包含以下属性

name = harry,andy,robert

email.harry = harry@xyz.com

email.andy = andy@xyz.com

email.robert = robert@xyz.com

要求是通过过滤name属性来显示电子邮件地址。

因此,在上述情况下,应显示所有电子邮件地址。

假设将来如果我从name属性中删除“robert”,那么只显示harry和andy的电子邮件地址。

有没有办法使用spring依赖注入来做同样的事情?

P.S。:我想使name属性可配置。我不想每次都添加一个新的bean属性。

1 个答案:

答案 0 :(得分:0)

使用组件上的@ConfigurationProperties(" email")注释绑定到名称和电子邮件列表。您必须稍微重新调整您的属性:

Properties:

email.names = harry,andy,robert
email.addresses.harry = harry@xyz.com
email.addresses.andy = andy@xyz.com
email.addresses.robert = robert@xyz.com

你的班级:

@Component
@ConfigurationProperties("email") // prefix email, find email.* values
public class AppProperties {

    private String names;
    private List<String> addresses = new ArrayList<>();

和Spring应该为你绑定一切。看看这个或多或少相同的教程:https://www.mkyong.com/spring-boot/spring-boot-configurationproperties-example/

仅限Spring Boot,但如果你不是,那么另一个很好的理由就是使用它。已经