我有一個服務類註解@Service註釋作爲類A,我在A中實現BeanFactoryAware現在我使用setBeanFactory方法設置BeanFactory。我正嘗試使用beanFactory.getBean方法加載一個bean「B」。現在在這種情況下,是否必須在application-context.xml文件中定義「B」bean?beanFactory.getBean不加載bean
1
A
回答
1
有2種方式..
第一個
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="b" class="your.package.B" />
</beans>
第二個
春天會掃描該文件夾並找出豆(與@Component註解,@服務,@Repository等)並註冊它
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<context:component-scan base-package="your.package" />
</beans>
我建議使用..
public class Application implements ApplicationContextAware{
private ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext)throws BeansException {
this.applicationContext = applicationContext;
}
}
和方法
B b = applicationContext.getBean("b");
1
如果在A級注入BeanFactory
,然後嘗試用beanFactory.getBean
讓豆b
,豆b
必須在與bean a
相同的應用程序上下文中聲明,或者在此應用程序上下文的父級中聲明。
具體使用情況與根應用上下文一個標準的Web應用程序和一個servlet應用程序上下文的DispatcherServlet
:
- 如果
A
的是根應用上下文,B
必須將在根應用程序上下文中聲明 - 如果
A
中是servlet應用上下文,B
既可以在servlet應用上下文或在根聲明一個
但如果唯一的原因是在豆A
用豆B
倒不如直接注入它,而不是BeanFactory
(用於應用程序contextes具有相同的規則)
相關問題
- 1. 在最後加載Spring bean
- 2. 動態加載配置Bean
- 3. 重新加載bean屬性
- 4. 從Grails腳本加載bean
- 5. 如何禁用spring bean加載日誌
- 6. 在加載時執行backing bean操作?
- 7. 組件掃描:用Spring加載bean
- 8. 啓動bean調用後加載生產
- 9. 打印加載的所有Spring bean
- 10. spring bean xml未從AppConfig加載
- 11. MBeanExporter和條件加載的一個bean
- 12. STS/Eclipse加載錯誤的Spring Bean XSD
- 13. 如何使用@Autowired而不是手動加載Spring bean?
- 14. Android Jelly Bean WebView不加載任何圖像,爲什麼?
- 15. 懶惰加載不加載
- 16. MiniProfiler不加載
- 17. jquery不加載
- 18. uiwebpage不加載
- 19. applet不加載
- 20. Jtable不加載
- 21. Laravel不加載
- 22. XML不加載
- 23. XHR不加載
- 24. 延遲加載Spring Bean作爲Integration Test的一部分
- 25. 從數據庫加載Bean屬性值 - Spring
- 26. 我怎樣才能加載spring bean與hiberate mysql數據spring-rest
- 27. primefaces,延遲加載數據表和jsf @conversation作用域bean
- 28. Managed Bean的 - 僅在頁面加載執行代碼
- 29. 如何在spring中加載一個沒有id,名字的bean?
- 30. 使用url參數從bean重新加載頁面