错误在这里:
Book warAndPiece = context.getBean("warAndPiece", Book.class);
context稍早创建一个对象(全部在 中main(String[] args)):
ApplicationContext context = new ClassPathXmlApplicationContext("instantiation.xml");
instantiation.xml包括注释:
<context:annotation-config/>
自己@Bean:
@Bean
public Book warAndPiece(@Qualifier("warAndPieceBrochure")Brochure brochure) { // it is not recommended to set qualifier as id!
return new Book(3000, "War and Piece", "Tolstoy", brochure);
}
它在一个Book被注释为包含的类中@Bean'ы:
@Configuration
public class Book {
...
}
完整的错误代码:
org.springframework.beans.factory.NoSuchBeanDefinitionException:
没有名为“warAndPiece”的bean可用
乍一看,您需要的一切都已详细说明。我错过了什么?
附录:
试图@Bean在与该类相同的包中制作一个测试配置类Main:
@Configuration
public class TestBeanConf {
@Bean
public TestBeanConf testBean() {
return new TestBeanConf();
}
}
在线的
context.getBean("testBean");
引发类似的错误。
@Configuration 注释标记了创建 bean 的类,而不是描述它的类。包含方法的类
标记为 @Configuration ?
另外,我认为@Autowired 应该与限定符一起使用。
改变
在
帮助。一切相连。