在@Bean方法上使用@ConfigurationProperties注释


问题内容

有人可以给MWE @ConfigurationProperties直接在@Bean方法上使用注释的方法吗?

我已经看到了无数的关于在类定义中使用它的示例-但还没有@Bean方法的示例。

引用文档

  • 这种添加到一个类定义或 一个@Bean方法
  • @Target(value = {TYPE, METHOD })

因此,我认为还有一种可能性和预期的用途-但不幸的是,我无法弄清楚。


问题答案:
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类具有属性url,用户名,密码,driverClassName,因此spring boot将它们映射到创建的对象。

DataSource类的示例:

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.
}