【问题标题】:Spring Boot - bean definitionSpring Boot - bean定义
【发布时间】:2016-09-10 04:20:31
【问题描述】:

我正在考虑将 Spring Boot 用于新应用程序,但我无法找出创建应用程序 bean 的最佳方法。

在高层次上,这将是一个 Web 应用程序,它可以具有一个或多个相同类型的 bean——每个具有不同的属性值。如果我需要添加一个相同类型的新 bean,我应该只需要配置它。通常,如果我使用 Spring MVC,我只需在应用程序上下文中定义每个 bean 并通过上下文文件加载属性值。 Spring Boot 更喜欢取消 xml 配置,但我不确定如何将 bean 定义转换为 Spring Boot 解决方案。我如何仍然使用 Spring Boot 来利用 IoC。

【问题讨论】:

  • 我的回答对您有帮助还是您还缺少什么?
  • 我建议您阅读这篇文章:bartslota.blogspot.com/2017/02/… 那里的一切都得到了很好的解释。

标签: spring spring-boot


【解决方案1】:

其实这和 Spring Boot 无关。正如您所提到的,它同时支持 Java 和 XML bean 配置。

您可以使用 Java 配置轻松地从同一个类中创建多个 bean。

XML 配置如:

<bean id="first" class="com.foo.MyClass" />

<bean id="second" class="com.foo.MyClass" />

翻译成:

@Configuration
class MyConfiguration {

    @Bean
    MyClass first() {
        return new MyClass();
    }

    @Bean
    MyClass second() {
        return new MyClass();
    }
}

【讨论】:

  • 这是可能的。还建议使用 @Qualifier 注释以避免在使用依赖注入时出现重复的 bean 异常。
【解决方案2】:

有了 Maciej Walkowiak 的回答,也建议这样写:

@Configuration
class MyConfiguration {

    @Bean
    @Qualifier("first")
    MyClass first() {
        return new MyClass();
    }

    @Bean
    @Qualifier("second")
    MyClass second() {
        return new MyClass();
    }
}

然后当您自动装配时,您可以使用:

@Autowired 
@Qualifier("second")
private MyClass myClass;

【讨论】:

    猜你喜欢
    • 2019-08-10
    • 2017-04-24
    • 1970-01-01
    • 2017-09-12
    • 2020-08-15
    • 2019-03-02
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    相关资源
    最近更新 更多