您可以用Spring以各种方式创建ConfigurationProperties
-对象。
一种方法是将@ConfigurationProperties
-注释添加到@Bean
-声明中,如下所示:
@Bean
@ConfigurationProperties("my.property.group")
public MyProperties myProperties() {
return new MyProperties();
}
它将从MyProperties
-类创建一个bean,然后使用其setter用配置文件中的值填充其成员。
您也可以直接在MyProperties
-Object上进行注释,如下所示:
@ConfigurationProperties("my.property.group")
public class MyProperties {
@Getter @Setter private String myFirstValue;
@Getter @Setter private String mySecondValue;
}
通过将@EnableConfigurationProperties(MyProperties.class)
放置到任何加载的配置来创建它。
还可以使用@ConstructorBinding
@ConfigurationProperties("my.property.group")
@ConstructorBinding
public class MyProperties {
@Getter private final String myFirstValue;
@Getter private final String mySecondValue;
public MyProperties(String myFirstValue, String mySecondValue) {
this.myFirstValue = myFirstValue;
this.mySecondValue = mySecondValue;
}
}
但是如何结合第一个@Bean方法创建不可变的ConfigurationProperties呢?
我尝试过这样的东西:
@Bean
@ConfigurationProperties("my.property.group")
// @ConstructorBinding <---- This is not applicable to methods
public MyProperties myProperties(String myFirstValue, String mySecondValue) {
return new MyProperties(myFirstValue, mySecondValue);
}
它告诉我,它不能自动调用参数,我将考虑声明一些类型为“<代码>字符串> <代码>的bean。
在@ConstructorBinding
的Spring-Boot
参考文档中,说明:
要使用构造函数绑定,必须使用@EnableConfigurationProperties或配置属性扫描启用类。您不能将构造函数绑定与常规Spring机制创建的bean一起使用。@组件Bean,通过@Bean方法创建的Bean或使用@导入加载的Bean)
Spring Boot文档可以在这里找到。
也许这里的一些答案足以解决你的问题。
问题内容: 是否可以通过读取另一个bean的属性来设置一个bean的属性?例如,假设我有: 我希望Spring实例化这两个类,并调用A的setList方法,并传入调用B的getList方法的结果。Spring配置可能类似于: las,这种伪造的XML不起作用。 为什么不将B注入A?因为我不想引入额外的依赖关系。A仅依赖列表,而不依赖B。 问题答案: 如果你使用的是spring 3.0,还可以使用新
出于某种原因,每当我尝试将属性添加到此类时,应用程序就会中断。无法确定需要配置哪个构造函数。 启动应用程序上下文时出错。要显示条件,请报告启用“调试”后重新运行应用程序。2021-12-17 00:40:17.874错误21160 --- [ main]o. s. b. d.日志失败分析记者: 应用程序启动失败 说明: com.example.demo.security.config.WebSec
我在如下配置类中创建了一个bean: 在FoodConfig.java 在食品服务课程中,我需要访问食品配置。所以我自动连接了食品配置。 试图从我的FoodServiceTest类访问AbstractFoodService类中的someParam时,我得到一个Nullpointer异常。 然而,若我在AbstractFoodServiceClass的构造函数中注入FoodConfig,它就会工作。
问题内容: 是否可以通过读取另一个bean的属性来设置一个bean的属性?例如,假设我有: 我希望Spring实例化这两个类,并调用A的setList方法,并传入调用B的getList方法的结果。Spring配置可能类似于: las,这种伪造的XML不起作用。 为什么不将B注入A?因为我不想引入额外的依赖关系。A仅依赖列表,而不依赖B。 问题答案: 除了@Kevin的答案,如果您使用的是sprin
本文向大家介绍Spring Boot配置特定属性spring.profiles的方法,包括了Spring Boot配置特定属性spring.profiles的方法的使用技巧和注意事项,需要的朋友参考一下 Spring Boot配置特定属性spring.profiles SpringBoot能使用application- {你的自定义profile名称myProfileName} .properti
问题内容: 是否可以在用Java编写的Spring配置中使用Spring的注释? 例如: 显然,不能直接实例化DataSource接口,但是为了简化起见,我在这里直接实例化了它。当前,当我尝试上述操作时,数据源对象仍然为null,并且Spring不会对其进行自动接线。 我通过返回一个Hibernate 对象成功地工作了。 所以我的问题特别是:是否有办法针对a ?或更笼统地说,在Spring Jav