저는 스프링 프레임 워크에 새로운 기능이 있습니다. @Component 내에 @Bean 어노테이션으로 2 개의 빈을 설정하려고합니다. 그 후, getBean (이름으로)을 얻으려고하면 NoSuchBeanDefinitionException이 발생합니다. 문제를 해결하도록 도와주세요. 구성 요소 - :스프링 : @Component와 @Bean을 사용하여 빈을 가져올 수 없습니다.
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());
}
}
- XML 구성 파일 : 앱의 context.xml
다음은 내 코드입니다.
<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());
}
}
- 예외 :
org.springframework.beans.factory.NoSuchBeanDefinitionException '(TB1)'라는 이름의 콩 정의 됨 at org.springframework.beans.factory.support org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean에서 org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition (AbstractBeanFactory.java:1111) 에서 .DefaultListableBeanFactory.getBeanDefinition (DefaultListableBeanFactory.java:577) (AbstractBeanFactory 된 .java : 276) org.springframework.context.support.AbstractApplicationContext.getBean (AbstractApplicationContext.java:1127) 에서 org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:191) 에서 닷컴에서 .example.proxy.ComponentBeanTest.test (ComponentBeanTest.java:38)
지원해 주셔서 감사합니다. 잘 작동합니다. 구성 요소 주석을 유지하면 Autowired에서는 제대로 작동하지만 context.getBean ("tb1")은 사용할 수 없습니다. 이 메커니즘을 이해하지 못합니다. – BinhLe
Component를 사용하는 경우 Bean으로 표시된 메소드가 정상 메소드 선언으로 처리되고 Bean이 생성되지 않으므로 클래스는 autowire의 유효한 후보입니다. 그러나 Configuration을 사용할 때 Bean으로 표시된 메소드는 스프링 빈을 생성하는 것으로 처리되고 Bean이 생성됩니다. – mhshimul
감사합니다. 나는이 문제에 대해 더 자세히 알고 싶다. 연구를위한 문서 나 열쇠를 나에게 줄 수 있습니까? – BinhLe