我對Spring DI相當陌生。 我們有兩個類,PhysicalService和PhysicalDAO。物理服務實例是使用某個服務處理程序動態創建的,因此它不是spring管理bean。物理DAO實例由Spring Beans管理。有什麼方法可以在實際服務中注入物理道?Spring依賴注入
回答
服務處理程序是spring bean嗎?然後,您可以將DAO注入到服務處理程序中,並且服務處理程序可以在創建它時將其提供給服務。
或者,您可以使用lookup injection將原型服務bean注入到處理程序中,從而有效地在處理程序中提供一個工廠方法,要求spring實例化該服務。
這就是說,我想知道爲什麼你需要一個服務處理程序?你確定你不能使用spring創建服務嗎?
編輯:如果你能擺脫屬性文件我把所有的服務到Spring Bean其ID匹配提供給處理程序的ID,注入應用程序上下文到服務處理程序,並做到:
public Object getInstance(String id) {
return applicationContext.getBean(id);
}
要遷移屬性文件Spring bean定義,我會使用正則表達式替換。
我tryig重構現有的代碼。服務處理程序正在使用工廠模式,並且正在基於某個ID創建服務實例。我們有getInstance(String id)方法,基於id,我們從屬性文件獲取類名併爲其創建實例。 – 2010-09-18 11:14:32
你說ServiceHandler使用工廠模式打包PhysicalService。
首先,您必須將PhysicalDAO注入工廠,您可以在春季環境中定義它或使用自動佈線註記。
//spring-context.xml
<bean id="physicalDAO" class="package.dao.PhysicalDAO">
//inject reference needed by dao class
</bean>
<bean id="physicalServiceFactory" class="package.service.PhysicalServiceFactory">
<property name="physicalDAO" ref="physicalDAO " ></property>
</bean>
,並在你的工廠類,你可以按如下編寫代碼:
PhysicalServiceFactory {
private PhysicalDAO physicalDAO;
public void setPhysicalDAO(PhysicalDAO _physicalDAO) {
physicalDAO = _physicalDAO;
}
public PhysicalService create(String id) {
PhysicalService ps = PhysicalService(id);
ps.setPhysicalDAO(physicalDAO);
return ps;
}
}
只要你的應用程序是春天的具體應用,下面簡單的步驟,可能有助於在註釋的方式注入PhysicalDAO到PhysicalService。
//Add this spring annotation to add your DAO class to Spring container
@Component("physicalDAO")
public class PhysicalDAO {
}
//Add Service class with PhysicalDAO object reference to use.
public class PhysicalService {
@Autowired
PhysicalDAO physicalDAO;
}
定義下面的條目給你彈簧配置文件。
<context:annotation-config></context:annotation-config>
<context:component-scan base-package="com.cognizant.aop.annotation"></context:component-scan>
- 1. Spring依賴注入失敗
- 2. Spring傳遞依賴注入
- 3. Spring依賴注入安全
- 4. Spring Boot + DynamoDBTypeConverter依賴注入
- 5. Guice到Spring依賴注入
- 6. Spring 3依賴注入
- 7. 使用Spring註釋注入依賴
- 8. spring 3註解依賴注入
- 9. Spring中的依賴注入失敗
- 10. 使用Grails Spring DSL的依賴注入
- 11. Spring依賴注入對象池
- 12. 注入的Spring依賴成JPA EntityListener
- 13. 原因使用Spring依賴注入
- 14. GWT或Spring中的依賴注入
- 15. 如何依賴注入struts2 action with spring?
- 16. 日誌Spring bean創建/依賴注入
- 17. 依賴注入Spring框架 - 工作
- 18. Spring MVC中的依賴注入
- 19. Spring依賴注入範圍混淆
- 20. 澤西與Spring 4依賴注入
- 21. 在Glassfish中禁用Spring依賴注入
- 22. 使用依賴注入的好處Spring
- 23. Spring依賴注入停止工作
- 24. Spring Java對象依賴注入
- 25. Spring 3.1依賴注入失敗
- 26. 向Spring bean注入依賴關係
- 27. Spring 3.0依賴注入的最小JARs
- 28. Spring依賴注入,使用@Named或@Resource?
- 29. Spring依賴注入@Autowired without setter
- 30. Spring - 向ServletContextListener注入依賴項
'使用某些服務處理程序動態創建'它是什麼樣的處理程序? 或者您創建PhysicalServiceFactory類來創建PhysicalService實例? – 2010-09-18 11:51:41