技术开发 频道

整合JSF、Hibernate、Spring实现用户登录应用



三、业务逻辑层
为了实现登录功能,这里只需要一个简单的登录逻辑。首先,我们定义了一个IUserService接口,用于根据用户名和密码得到用户信息。
7. com.it168.logon.model.service.IUserService.java:
package com.it168.logon.model.service; import com.it168.logon.model.businessobject.Userinfo; public interface IUserService { public Userinfo login(String username, String password); }


 

接着,UserService类实现了该接口:
8. com.it168.logon.model.service.impl.UserService.java:

package com.it168.logon.model.service.impl; import com.it168.logon.model.businessobject.Userinfo; import com.it168.logon.model.dao.impl.UserDAO; import com.it168.logon.model.service.IUserService; public class UserService implements IUserService { private UserDAO userDAO; public void setUserDAO(UserDAO userDAO) { this.userDAO = userDAO; } public Userinfo login(String username, String password) { Userinfo user = this.userDAO.getUser(username); if (user != null) { if (!user.getPassword().equals(password)) { user = null; } } return user; } }

 

 大家或许注意到了这样一句:
private UserDAO userDAO;
这里的UserDAO正是数据访问层中的UserDAO。在UserService类中,我们没有看到UserDAO的实例化过程,既然没有实例化,Userinfo user = this.userDAO.getUser(username);这行代码,又是如何发挥作用的呢?
9. applicationContext.xml代码片断二:

<bean id="userDAO" class="com.it168.logon.model.dao.impl.UserDAO"> <property name="hibernateTemplate"> <ref bean="hibernateTemplate" /> </property> </bean> <bean id="userService" class="com.it168.logon.model.service.impl.UserService"> <property name="userDAO"> <ref local="userDAO" /> </property> </bean>

 

这也正是Spring的强大所在!它将类的实例化过程交给了Spring容器,从而实现了控制反转(IoC)。

0
相关文章