下面说明下关于 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>