我有一個服務類註解@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. ClassPathXmlApplicationContext加載bean
- 2. 加載Spring bean
- 3. spring 3.1:加載bean時內存不足。
- 4. JSF2,從ViewScoped bean重新加載頁面而不破壞bean?
- 5. 動態加載配置Bean
- 6. 重新加載bean屬性
- 7. 在最後加載Spring bean
- 8. 從Grails腳本加載bean
- 9. 加載Spring Bean的練習
- 10. Spring在任何其他Bean之前加載Bean
- 11. 關於加載spring beans,如何捕獲最初加載的bean?
- 12. 根據主機名加載Bean
- 13. 啓動bean調用後加載生產
- 14. 在加載時執行backing bean操作?
- 15. 打印加載的所有Spring bean
- 16. 從資源bean加載文件?
- 17. MBeanExporter和條件加載的一個bean
- 18. 如何禁用spring bean加載日誌
- 19. 註釋Groovy bean在Spring中加載
- 20. Bean方法「數據源」沒有加載
- 21. spring bean xml未從AppConfig加載
- 22. STS/Eclipse加載錯誤的Spring Bean XSD
- 23. 組件掃描:用Spring加載bean
- 24. 將spring bean加載到servlet中
- 25. 爲什麼在哪些情況下使用不同的類加載器兩次加載加載bean?
- 26. Android Jelly Bean WebView不加載任何圖像,爲什麼?
- 27. 如何使用@Autowired而不是手動加載Spring bean?
- 28. 簡單的JSF與Managed Bean不能被JBoss 7.1加載(JBAS018210)
- 29. MapView不加載Jelly Bean上的內容,但在KitKat上工作
- 30. 懶惰加載不加載