当前位置: 首页 > 面试题库 >

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

邵昆琦
2023-03-14
问题内容

有人可以给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.
}


 类似资料:
  • 我想有一种简单的方法来构建测试数据,并发现生成器模式非常适合这里描述的情况。然而,为了减少组件测试中的样板代码,甚至更多,我发现来自龙目岛项目的@Builder是一个很好的候选人。然而,我找不到任何关于如何在方法上使用它的留档或在线示例。我想在某种工厂方法上使用,因为我不能对实现进行任何更改。 有人能举例说明如何在方法上实际使用?

  • 我使用Spring 5.1.4。RELEASE,在bean配置方法上使用@Profile注释时,无法通过构造函数注入相同接口的两个字段。我有一个简单的Publisher组件,如下所示: 当我使用@Profile注释标记整个配置时,它会按预期工作: 上面的配置是可以的,但是当我只想在配置类中的某些方法上使用@Profile注释时就会出现问题: 然后我在启动过程中出错: 更新:已经解决了。这是我的错误

  • 使用Spring bean作为带有@cacheable注释的键

  • 我很好奇spring注入是如何用注释处理调用方法的。如果我将注释放在一个方法上,并返回一个实例,我理解这会告诉spring通过调用该方法并获得返回的实例来创建一个bean。但是,有时该bean必须用于连接其他bean或设置其他代码。通常的方法是调用带注释的方法来获得一个实例。我的问题是,为什么这不会导致bean的多个实例浮动? 例如,参见下面的代码(摘自另一个问题)。方法是用注释的,因此我想spr

  • 我有一个类似于下面的类: 问题是,有太多@bean注释的方法,它们只是在名称、返回类型和方法调用的参数上有所不同。我想让这堂课类似于以下内容: Spring有可能吗?

  • 问题内容: Spring Boot文档说要使用注释 您还需要列出要在注释中注册的属性类 ,如以下示例所示: 并给出以下代码: 但是在下一段中说: 即使前面的配置为AcmeProperty创建了常规bean,我们也建议仅处理环境,尤其不要从上下文中注入其他bean。话虽如此, 注释也会自动应用到您的项目中,以便从环境配置任何使用@ConfigurationProperties注释的现有bean。 建