今天寫了個Factory Class,用來把interface和實現的class進行組合……以便在業務邏輯中調用……類似這樣:
<managers>
<manager id="DbConnectionManager">
<service>tutorial.db.IDbConnectionManager< SPAN>service>
<service-impl>tutorial.db.impl.DbConnectionManagerImpl< SPAN>service-impl>
< SPAN>manager>
<manager id="EmployeeService">
<service>tutorial.service.iface.IEmployeeService< SPAN>service>
<service-impl>tutorial.service.impl.EmployeeServiceImpl< SPAN>service-impl>
< SPAN>manager>
< SPAN>mamagers>
在業務邏輯中,類似下面的調用:
BizFactory bizFactory = new BizFactory();
Employee employee = new Employee();
employee.setEmpNumber("9527");
//...省略...
IEmployeeService empService
= (IEmployeeService) bizFactory.create("EmployeeService");
empService.update(employee);
但是在JBuilder運行的時候,卻報告EmployeeServiceImpl.class找不到……郁悶……一看才發現,JBuilder 2005在Make的時候,在${PRoject_Home}/classes中生成了EmployeeServiceImpl.class文件,卻并沒有把這個文件部署到${Project_Home}/${WebModule_Home}/WEB-INF/classes下面!
分析了半天,難道是IEmployeeService有被顯示調用,而EmployeeServiceImpl沒有代碼顯示調用,是通過Factory Class讀取config xml來創建的,難道……這就是要害???
翻了半天JBuilder 2005的配置選項,終于讓我發現了……見下圖,去掉那個默認的選項即可!
新聞熱點
疑難解答