내 코드에서 다음 예외가 발생합니다.
Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'Unknown' available
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:686)
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1210)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1089)
at core.Main.main(Main.java:38)
혼합 구성-XML 및 주석 기반을 사용하고 있습니다.
개발 컨텍스트 :
<beans profile="dev">
<context:component-scan base-package="core"/>
<context:annotation-config/>
<import resource="classpath:beans/beans.xml"/>
</beans>
Beans.xml 컨텍스트 : XML로 초기화 된 다른 Bean을 포함합니다. 여기에는 주석이 사용되지 않습니다.
<beans profile="dev,default">
<bean ...
<bean ...
</beans>
그리고 여기에 문제가있는 구성이 있습니다 (아래 주석을 참고하십시오).
@Configuration
@Profile({"dev"})
public class MyConfig {
@Bean(value="Unknown")
@Description("Bean for unknown user")
public User getUnknownUser() {
User user = new User(-1);
user.setUsername("Unknown");
return user;
}
}
Spring은 XML에 정의 된 Bean을 올바르게 초기화 default
합니다. 이 Bean은 프로필에 있습니다. 알 수없는 사용자 만 dev
프로필에 있습니다.
메인 클래스 :
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("dev.xml");
applicationContext.getEnvironment().acceptsProfiles("dev");
User unknown = (User)applicationContext.getBean("Unknown");
LOGGER.info(unknown.toString());
당신의 도움을 주셔서 감사합니다
이 줄이 누락되었음을 발견했습니다.
applicationContext.refresh();
지금 작동합니다. 감사합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다