论坛首页 入门技术论坛

请教一个Spring和DAO的问题。

浏览 1420 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-01-31  
最近项目在整架构。要把以前的struts+ibatis+dao.换成现在的struts+ibatis+dao+spring.

于是最近猛啃了下Spring的书。现在项目新架构的框架出来了,我发现,现在多了一层service层。以前是用蒙面类(TableOperatorFacadeBean)来调用DAO接口的实现类,现在变成通过调用service接口,然后在这个接口的实现类中去调用DAO的实现类。。。

限于初学知识不够,始终没弄明白这层是为什么出现,以及它都能做写什么。。。
请哪位指点一下。

附上部分代码,大概问题没描述清楚。
public class LoginAction extends Action{

	IUserInfoService  userInfoService;
	
	public IUserInfoService getUserInfoService() {
		return userInfoService;
	}

	public void setUserInfoService(IUserInfoService userInfoService) {
		this.userInfoService = userInfoService;
	}
	

LoginAction中对数据层的操作现在是:
resUserInfo = userInfoService.getLoginInfo(userInfo);

UserInfoServiceImpl:
public class UserInfoServiceImpl implements IUserInfoService {
	
	IUserInfoDAO  userinfoDao;
	
	public IUserInfoDAO getUserinfoDao() {
		return userinfoDao;
	}
	public void setUserinfoDao(IUserInfoDAO userinfoDao) {
		this.userinfoDao = userinfoDao;
	}
         public UserInfoBean getLoginInfo(UserInfoBean userInfo) {
		List list=null;
		try {
			 list =userinfoDao.getUserInfo(userInfo);
		} catch (Exception e) {
			logger.info("获取登录用户信息失败!",e);
			return null;
		}
		

UserInfoDAOImpl :
public class UserInfoDAOImpl extends SqlMapClientDaoSupport implements IUserInfoDAO {
       	public List getUserInfo(UserInfoBean userInfo) {
		userInfo.setPassword(MsgDigest.getMD5(userInfo.getPassword()));
		List loginList = this.getSqlMapClientTemplate().queryForList(Const_daoimpl.USER_INFO,userInfo);
		return loginList;
	}

以前就是在ACTION中,直接:
TableOperatorFacadeBean tofb = new TableOperatorFacadeBean();
		resUserInfo = tofb.getLoginInfo(userInfo);

我的理解是,使用依赖注入,就是为了减少ACTION对操作操作数据库部分的依赖。使用DAO也是使ACTION不直接调用对数据库调用的代码。其实一样是减少了依赖。那么这里是不是直接依赖注入DAO的接口就可以了?何必还要多出这个SERVICE层?
不知道自己的想法和理解对不对,希望熟悉这方面的人能多指点一下。谢谢!
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics