在“@Bean”方法上使用“@ConfigurationProperties”注释
2022-09-01 05:17:53
有人可以给MWE一个如何直接在方法上使用注释吗?@ConfigurationProperties
@Bean
我已经看到无数的例子使用它在类定义上 - 但还没有方法的例子。@Bean
引用文档:
- 将其添加到类定义或
@Bean
方法 - @Target(值={类型,方法})
因此,我认为也有一种可能性和预期的用途 - 但不幸的是,我无法弄清楚。
有人可以给MWE一个如何直接在方法上使用注释吗?@ConfigurationProperties
@Bean
我已经看到无数的例子使用它在类定义上 - 但还没有方法的例子。@Bean
引用文档:
@Bean
方法
因此,我认为也有一种可能性和预期的用途 - 但不幸的是,我无法弄清楚。
spring.datasource.url = [url]
spring.datasource.username = [username]
spring.datasource.password = [password]
spring.datasource.driverClassName = oracle.jdbc.OracleDriver
@Bean
@ConfigurationProperties(prefix="spring.datasource")
public DataSource dataSource() {
return new DataSource();
}
在这里,DataSource 类具有 proeprties url、用户名、密码、driverClassName,因此 Spring boot 将它们映射到创建的对象。
数据源类的示例:
public class DataSource {
private String url;
private String driverClassName;
private String username;
private String password;
//getters & setters, etc.
}
换句话说,这与使用刻板印象注释(@Component,@Service等)初始化某些Bean具有相同的效果,例如
@Component
@ConfigurationProperties(prefix="spring.datasource")
public class DataSource {
private String url;
private String driverClassName;
private String username;
private String password;
//getters & setters, etc.
}
除了 用于批注类之外,还可以在公共方法上使用它。当您希望将属性绑定到不受您控制的第三方组件时,这样做可能特别有用。@ConfigurationProperties
@Bean
要从环境属性配置 Bean,请添加到其 Bean 注册中,如以下示例所示:@ConfigurationProperties
@ConfigurationProperties(prefix = "another")
@Bean
public AnotherComponent anotherComponent() {
...
}
使用另一个前缀定义的任何属性都将以类似于前面的 AcmeProperties 示例的方式映射到该另一个组件 Bean 上。