gpt4 book ai didi

java - Spring无法创建bean

转载 作者:行者123 更新时间:2023-11-29 04:42:38 26 4
gpt4 key购买 nike

我是 spring 及其概念的初学者。我正在尝试使用 @Configuration 和 package-scan 注释来扫描单个包下的一些 bean 提供程序类。当其中一个类的 @Bean 注释方法与另一个类的另一个 @Bean 注释方法同名时,不会为这两个类创建 bean。如果我将 @bean 注释的方法名称更改为未创建的 bean 的不同名称,则两个 bean 都已成功创建。无法理解这种行为。

    @Configuration
public class ManagementHelperProvider {
@Bean
public ManagementHelper getInstance() {
return new ManagementHelper();
}
}

如果我正在创建另一个类似下面的类,则不会创建 Bean ManagementHelper。

    @Configuration
public class ManagementValidatorProvider {
@Bean
public ManagementValidator getInstance() {
return new ManagementValidator();
}
}

如果我正在创建另一个类似下面的类,则会创建 Bean ManagementHelper。

    @Configuration
public class ManagementValidatorProvider {
@Bean
public ManagementValidator getInstanceTwo() {
return new ManagementValidator();
}
}

最佳答案

案例一:

用名称 getInstance 创建的 bean1。

用相同名称 getInstance 创建的 bean2 和 bean1 被此覆盖

案例2:

用名称 getInstance 创建的 bean1。

用名称 getInstanceTwo 创建的 bean2。没有覆盖,因为名称没有冲突

如果你

 @Bean(name="bean1") 

@Bean(name="bean2") 

它也会起作用。

@Configuration
public class AppConfig {
@Bean
public TransferService transferService() {
return new TransferServiceImpl();
}
}

以上内容完全等同于以下appConfig.xml:

<beans>
<bean name="transferService" class="com.acme.TransferServiceImpl"/>
</beans>

两者都会导致名为 transferService 的 bean 在 BeanFactory/ApplicationContext 中可用,绑定(bind)到 TransferServiceImpl 类型的对象实例:

transferService => com.acme.TransferService

关于java - Spring无法创建bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38575903/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com