Spring Boot 2.X.X 中是否有 PropertySourcesBinder 的替代品?
Is there a replacement of PropertySourcesBinder in Spring Boot 2.X.X?
在 Spring Boot 1.X.X 中有一个名为 PropertySourcesBinder.class 的 class 。请检查 API link。
PropertySourcesBinder.class
class 的目的很简单 - 在构造函数中接收 org.springframework.core.env.ConfigurableEnvironment environment
,很容易使用以给定前缀开头的 extractAll (String somePrefixHere)
属性。然而似乎在 Spring Boot 2.X.X 中缺少此 class。
然而,这个方法非常有用,因为创建 Map> 时递归地匹配前缀的属性,同样省略前缀本身,这在 Spring “深”属性,如 A.B.C.D.E.F.G.H.I..... 你不知道它到底有多深。
恐怕我的问题不是很清楚,不过相信用过这个的人class会明白我的问题到底是什么?
听起来你应该使用新的 Binder
API:
ConfigurableEnvironment environment = new StandardEnvironment();
Map<String, Object> source = new HashMap<>();
source.put("your.prefix.a.b.c.e.f", "one");
source.put("your.prefix.a.b.c.e.g", "two");
source.put("your.prefix.a.b.c.e.h.i.j.k", "three");
environment.getPropertySources().addFirst(new MapPropertySource("example", source));
Bindable<Map<String, Map>> bindable = Bindable.mapOf(String.class, Map.class);
Map<String, Map> bound = Binder.get(environment).bind("your.prefix", bindable).get();
System.out.println(bound);
以上将输出以下内容:
{a={b={c={e={f=one, g=two, h={i={j={k=three}}}}}}}}
你在找这个吗?
@ConfigurationProperties(prefix = “myprops”)
这是一个例子:
在 Spring Boot 1.X.X 中有一个名为 PropertySourcesBinder.class 的 class 。请检查 API link。 PropertySourcesBinder.class
class 的目的很简单 - 在构造函数中接收 org.springframework.core.env.ConfigurableEnvironment environment
,很容易使用以给定前缀开头的 extractAll (String somePrefixHere)
属性。然而似乎在 Spring Boot 2.X.X 中缺少此 class。
然而,这个方法非常有用,因为创建 Map
恐怕我的问题不是很清楚,不过相信用过这个的人class会明白我的问题到底是什么?
听起来你应该使用新的 Binder
API:
ConfigurableEnvironment environment = new StandardEnvironment();
Map<String, Object> source = new HashMap<>();
source.put("your.prefix.a.b.c.e.f", "one");
source.put("your.prefix.a.b.c.e.g", "two");
source.put("your.prefix.a.b.c.e.h.i.j.k", "three");
environment.getPropertySources().addFirst(new MapPropertySource("example", source));
Bindable<Map<String, Map>> bindable = Bindable.mapOf(String.class, Map.class);
Map<String, Map> bound = Binder.get(environment).bind("your.prefix", bindable).get();
System.out.println(bound);
以上将输出以下内容:
{a={b={c={e={f=one, g=two, h={i={j={k=three}}}}}}}}
你在找这个吗?
@ConfigurationProperties(prefix = “myprops”)
这是一个例子: