当前位置: 首页 > 知识库问答 >
问题:

Spring:使用@component和@bean无法获得bean

苍温文
2023-03-14

我是Spring框架的新手。我尝试在@component中使用@bean注释配置2bean。之后,我尝试getBean(按名称),得到一个NoSuchBeanDefinitionException。请帮我解决一下。

这是我的代码:-组件:

package com.example.component;

@Component
public class FactoryMethodComponent {

 private static int i;

 @Bean
 @Qualifier("public")
 public TestBean publicInstance() {
    return new TestBean("publicInstance");
 }

 @Bean
 @Qualifier("tb1")
 public TestBean1 publicInstanceTB1() {
    return new TestBean1(publicInstance());
 }
}
<beans ...>
    <context:component-scan base-package="com.example.*" />
</beans>
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:app-context.xml" })
public class ComponentBeanTest {
@Test
public void test() {
    System.out.println(((TestBean1)context.getBean("tb1")).getTestBean().getMethodName());
    System.out.println(publicTestBean.getMethodName()); 
}
}

共有1个答案

公西俊德
2023-03-14

@component替换为@configuration,它指示类声明了一个或多个@bean方法,并且可以由Spring容器处理以在运行时生成bean定义和这些bean的服务请求。

@Configuration
public class FactoryMethodComponent {

 private static int i;

 @Bean
 @Qualifier("public")
 public TestBean publicInstance() {
    return new TestBean("publicInstance");
 }

 @Bean
 @Qualifier("tb1")
 public TestBean1 publicInstanceTB1() {
    return new TestBean1(publicInstance());
 }
}
 类似资料:
  • 问题内容: 我了解到注释是在Spring 2.5中引入的,目的是通过使用类路径扫描摆脱xml bean的定义。 是在Spring 3.0中引入的,可以与之一起使用,以完全摆脱xml文件并改用java config。 是否有可能重新使用注释而不是引入注释?我的理解是,两种情况下的最终目标都是创建bean。 问题答案: 并做两件完全不同的事情,不应混淆。 (和和)用于使用类路径扫描自动检测和自动配置b

  • 问题内容: 如何为bean的原始属性设置值? 由于我们有注释,注释也用于绑定实例依赖项,那么原始属性又如何呢? 问题答案: 对于基元,可以使用注释。通常的情况是,从的属性文件中加载值,然后 您还可以将值定义为bean,这是比较古老的: 然后

  • iam无法在运行应用程序时检索到swagger ui,http://localhost:8080/Swagger-ui.html,有人能说出原因吗?

  • 我正在用Camel为我的Spring Boot应用程序做单元测试。当应用程序运行时,它可以得到配置为@Component的bean 我得到的豆子是这样的: 但当我进行测试时,该路径无法获取bean“ 这是我如何配置我的单元测试类: 请给出建议!!!!非常感谢

  • 本文向大家介绍Spring中@Bean和@Component批注之间的区别。,包括了Spring中@Bean和@Component批注之间的区别。的使用技巧和注意事项,需要的朋友参考一下  Spring支持多种类型的注释,例如@ Component,@ Controller,@ service @Repository和@Bean。所有这些都可以在org.springframework.stereo