2 回答
![?](http://img1.sycdn.imooc.com/5458453d0001cd0102200220-100-100.jpg)
TA贡献1772条经验 获得超5个赞
您有两个HomePage
实例bean :homePage
和webHomePage
。
这样,Spring不会以这种方式homePage
调用您想要的实例。 getBean(Class clazz)
ApplicationContext.getBean(HomePage.class)
请注意,如果您调用ApplicationContext.getBean(WebHomePage.class)
,它将在您具有的单个实例的情况下工作WebHomePage
。
作为以编程方式检索Bean的替代方法,您可以ApplicationContext.getBean(String name)
通过传递Bean名称来使用,例如:
HomePage homePage = ApplicationContext.getBean("homePage")
或者 :
HomePage homePage = ApplicationContext.getBean("webHomePage")
请注意,我无法在任何地方自动连接这些类,因为它们大约有40个,这就是为什么我使用实例化它们
我真的不明白你为什么不能使用@@utowired
。您应该将咖啡豆自动接线到需要它们的地方。
一枪检索40个bean将给您的方法和类带来太多的责任。
![?](http://img1.sycdn.imooc.com/545863e80001889e02200220-100-100.jpg)
TA贡献1821条经验 获得超6个赞
默认情况下,Spring框架会自动搜索匹配的bean。如果同一类(包括子类)有多个bean,则必须使用
@Qualifier("beanName")
用于按bean名称进行匹配。
对于您的情况,您可以执行以下操作:
@Component
@Qualifier("homePage")
public class HomePage extends BasePage {
}
和
@Component
@Qualifier("webHomePage")
public class WebHomePage extends HomePage {
}
现在,您可以使用以下代码获取HomePagebean:
HomePage page = (HomePage)applicationContext.getBean("homePage");
添加回答
举报