gpt4 book ai didi

java - 是否可以根据springboot中application.properties中的前缀创建多个bean

转载 作者:行者123 更新时间:2023-11-30 06:15:58 24 4
gpt4 key购买 nike

我的 springboot 应用程序 (1.5.4.RELEASE) 中的 application.properties 中有以下内容

my.prefix.one.id=id01
my.prefix.one.name=one

my.prefix.two.id=id02
my.prefix.two.name=two

还有一个像下面这样的类

public class MyClass{
private String id;
private String name;
//getters and setters
}

如果我使用 @ConfigurationProperties(prefix="my.prefix.one"),那么我会得到一个 id 字段为“id01”的 MyClass bean。

有没有办法指示springboot扫描所有前缀为“my.prefix”的属性并创建多个bean。在本例中,有两个 bean - id 字段为“id01”的 bean 和 id 字段为“id02”的 bean?

最佳答案

您应该使用 springs @ConfigurationProperties 并在 MyClass 中使用嵌套类

@ConfigurationProperties(prefix="my.prefix")
public class MyClass{

private One id01;
private Two id02;
//GETTER SETTER

public static class One {
private String id;
// GETTER SETTER
}

public static class Two {
private String id;
// GETTER SETTER
}
}

然后你就可以像这样访问它

myClass.getOne().getId();

您要做的最好的事情就是通读 https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-typesafe-configuration-properties

<小时/>

Update: OP doen't want to use nested classes to retrieve those fields

    @ConfigurationProperties(prefix="my.prefix")
public class MyClass{
private String id01;
private String id02;

@NotNull
private One one;
@NotNull
private Two two;

public getId01(){
return one.id;
}
public getId02(){
return two.id;
}

public static class One {
private String id;
// GETTER SETTER
}

public static class Two {
private String id;
// GETTER SETTER
}
}

现在你可以像这样使用它们

   myClass.getId01();
myClass.getId02();

关于java - 是否可以根据springboot中application.properties中的前缀创建多个bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49184683/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com