下面说明下关于 Sping的设计与配置的问题,
其实Spring的功能还很丰富,但是我就浅显的使用。里面主要是说明Bean与他们的跳转,并且说明了后面struts的action部分。
先拿一个POJO做例子说明:
import java.io.Serializable; public class Pay implements Serializable { private Integer payid; private Integer paynum; private Integer number; private String paytime; private Integer empid; public Integer getPayid() { return payid; } public void setPayid(Integer payid) { this.payid = payid; }
其他的GET SET略。
一下的代码是按例子里面学习,感觉这样使用可以很好的将DAO解耦。一下是接口
import java.util.List; import com.pepmanagex.hibernate.PayDAO; import com.pepmanagex.model.Pay; public interface IPayManager { public abstract PayDAO getPayDAO(); public abstract void setPayDAO(PayDAO payDAO); public abstract void savePay(Pay pay); public abstract List getPay(Pay pay); public abstract void deletePay(Integer id); public abstract Pay getPay(Integer id); }
接口实现类:注意放回的List,因为struts阶段获取的值全部都用list传递。
import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.pepmanagex.hibernate.PayDAO; import com.pepmanagex.model.Pay; import com.pepmanagex.services.imp.IPayManager; public class PayManager implements IPayManager { protected final Log log =LogFactory.getLog(PayManager.class); private PayDAO payDAO; public void deletePay(Integer id) { // TODO Auto-generated method stub Pay pay=payDAO.findById(id); try { payDAO.delete(pay); } catch (Exception e) { // TODO: handle exception log.error("Failure to delete pay.",e); } } public List getPay(Pay pay) { // TODO Auto-generated method stub List list=null; try { list=payDAO.findByExample(pay); } catch (Exception e) { // TODO: handle exception log.error("Failure to get pay", e); } return list; } public Pay getPay(Integer id) { // TODO Auto-generated method stub return payDAO.findById(id); } public PayDAO getPayDAO() { // TODO Auto-generated method stub return payDAO; } public void savePay(Pay pay) { // TODO Auto-generated method stub payDAO.save(pay); } public void setPayDAO(PayDAO payDAO) { // TODO Auto-generated method stub this.payDAO=payDAO; }
测试:这个不可缺
import org.springframework.context.ApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; import com.pepmanagex.model.Pay; import com.pepmanagex.services.imp.IPayManager; public class TestP { /** * @param args */ private IPayManager payManager; public IPayManager getPayManager() { return payManager; } public void setPayManager(IPayManager payManager) { this.payManager = payManager; } public static void main(String[] args) { // TODO Auto-generated method stub ApplicationContext applicationContext = new FileSystemXmlApplicationContext( "classpath:com/pepmanagex/congif/applicationContext.xml"); TestP testp=(TestP)applicationContext.getBean("savePay_test"); testp.savepay(); } public void savepay(){ Pay pay=new Pay(); pay.setPaynum(123); pay.setNumber(123); payManager.savePay(pay); } }
一下全部都是配置文件:(注意:在编写Bean的参数的时候点出来的名称,这里容易错)
添加一个manager来将Action与DAO分离开,编写时候代码量也减少不少。
<!-- pay的dao manager action --> <bean id="payDAO" class="com.pepmanagex.hibernate.PayDAO"> <property name="sessionFactory"> <ref local="sessionFactory" /> </property> </bean> <bean id="payManager" class="com.pepmanagex.services.doimp.PayManager"> <property name="payDAO"> <ref local="payDAO" /> </property> </bean> <bean name="/pay" class="com.pepmanagex.struts.action.PayAction"> <property name="payManager"> <ref local="payManager" /> </property> </bean>
测试的配置另外写个SpringConfig文件这样方面管理也好查看,我这次全部放在一块了。
<bean id="saveRole_test" class="com.pepmanagex.test.TestR"> <property name="roleManager"> <ref local="roleManager"/> </property> </bean>