Eclipse中SSH项目搭建图文教程(三)—— 整合 Spring
2016年12月27日 17:42:55 Spring ⁄ 共 5309字 暂无评论 ⁄ 被围观 3,411次

这一篇是承接上一篇文章《Eclipse中SSH项目搭建图文教程(二)》写的,在前一篇文章搭建的环境及新建项目的基础上,主要说一说整合 Spring 部分。

第一步,重构代码。

在说 Spring 整合之前,我们先整理一下我们的代码,其实这部应该在 Hibernate 整合部分就应该弄好,可当时没整理,那么就在这里整理一下吧。

我们在工程中新建几个包:dao、dao.impl、service、service.impl,新建两个保存用户的方法,把原来 LoginAction 中保存用户的部分代码放到 UserDAOImpl 类中,代码结构如下:

代码如下:

LoginAction.java:

Code   ViewPrint
  1. package com.menglanglang.ssh.demo.action;
  2. import com.menglanglang.ssh.demo.dto.UserDto;
  3. import com.menglanglang.ssh.demo.service.UserService;
  4. import com.opensymphony.xwork2.ActionSupport;
  5. public class LoginAction extends ActionSupport {
  6.     private static final long serialVersionUID = 1L;
  7.     private UserDto user;
  8.     @Override
  9.     public String execute() throws Exception {
  10.         UserService userService = new UserService();
  11.         userService.add(user);
  12.         return SUCCESS;
  13.     }
  14.     public UserDto getUser() {
  15.         return user;
  16.     }
  17.     public void setUser(UserDto user) {
  18.         this.user = user;
  19.     }
  20. }

UserService.java:

Code   ViewPrint
  1. package com.menglanglang.ssh.demo.service;
  2. import com.menglanglang.ssh.demo.dao.UserDAO;
  3. import com.menglanglang.ssh.demo.dao.impl.UserDAOImpl;
  4. import com.menglanglang.ssh.demo.dto.UserDto;
  5. public class UserService {
  6.     private UserDAO userDAO = new UserDAOImpl();
  7.     public UserDAO getUserDAO() {
  8.         return userDAO;
  9.     }
  10.     public void setUserDAO(UserDAO userDAO) {
  11.         this.userDAO = userDAO;
  12.     }
  13.     public void add(UserDto u) {
  14.         userDAO.save(u);
  15.     }
  16. }

UserDAO.java:

Code   ViewPrint
  1. package com.menglanglang.ssh.demo.dao;
  2. import com.menglanglang.ssh.demo.dto.UserDto;
  3. public interface UserDAO {
  4.     public void save(UserDto u);
  5. }

UserDAOImpl.java:

Code   ViewPrint
  1. package com.menglanglang.ssh.demo.dao.impl;
  2. import org.hibernate.Session;
  3. import org.hibernate.SessionFactory;
  4. import org.hibernate.cfg.Configuration;
  5. import com.menglanglang.ssh.demo.dao.UserDAO;
  6. import com.menglanglang.ssh.demo.dto.UserDto;
  7. public class UserDAOImpl implements UserDAO {
  8.     @Override
  9.     public void save(UserDto u) {
  10.         Configuration cfg = new Configuration();
  11.         SessionFactory sf = cfg.configure().buildSessionFactory();
  12.         Session session = sf.openSession();
  13.         session.beginTransaction();
  14.         session.save(u);
  15.         session.getTransaction().commit();
  16.         session.close();
  17.         sf.close();
  18.     }
  19. }

Dto包下的内容没有变化。

之所以这样改,是因为这种项目结构更加符合面向对象开发,等做的项目多了,自然就会觉得这是最好的代码结构,也是大家开发所公认的最常见的代码结构。

第二步,运行项目。

由于重构了代码,再次重新运行一下项目,看登陆时能否保存用户和密码到数据库,请确保能保存成功后,再请看下一步。

第三步,导入 Spring 所需要的包。

首先需要到官网下载 Spring 框架,下载地址为:

http://repo.spring.io/release/org/springframework/spring/4.3.5.RELEASE/

我这里下载的版本是 spring-framework-4.3.5.RELEASE-dist,下载后解压到 F 盘下。依次打开 F 盘 -> spring-framework-4.3.5.RELEASE -> libs,先把所有包复制到项目的 WebContent/WEB-INF/lib 下,当然可以把后缀为 -sources.jar 和 -javadoc.jar 的包除外,可以看到这些包都以 spring 打头,总共 20 个。

其实现在用不了这么多包,很多包添加后都是无用的,但是作为初学者,最好是都添加进去,等开发时间长了,自然而然就知道什么情况下该用什么包了。

第四步,编写 spring 配置文件。

在 src 下新建 XML 文件 spring.xml,代码如下:

Code   ViewPrint
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans
  5.         http://www.springframework.org/schema/beans/spring-beans.xsd">
  6.     <bean id="userDAO" class="com.menglanglang.ssh.demo.dao.impl.UserDAOImpl">
  7.     </bean>
  8.     <bean id="userService" class="com.menglanglang.ssh.demo.service.UserService">
  9.         <property name="userDAO" ref="userDAO"></property>
  10.     </bean>
  11.     <!-- more bean definitions go here -->
  12. </beans>

第五步,修改代码。

由于添加了 Spring 配置,所以需要修改源代码,让 Spring 帮忙注入 DAO 和 Service,主要修改如下:

LoginAction.java:

Code   ViewPrint
  1. package com.menglanglang.ssh.demo.action;
  2. import org.springframework.beans.factory.BeanFactory;
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;
  4. import com.menglanglang.ssh.demo.dto.UserDto;
  5. import com.menglanglang.ssh.demo.service.UserService;
  6. import com.opensymphony.xwork2.ActionSupport;
  7. public class LoginAction extends ActionSupport {
  8.     private static final long serialVersionUID = 1L;
  9.     private UserDto user;
  10.     @Override
  11.     public String execute() throws Exception {
  12.         @SuppressWarnings("resource")
  13.         BeanFactory applicationContext = new ClassPathXmlApplicationContext("spring.xml");
  14. //      UserService userService = new UserService();
  15.         UserService userService = (UserService) applicationContext.getBean("userService");
  16.         userService.add(user);
  17.         return SUCCESS;
  18.     }
  19.     public UserDto getUser() {
  20.         return user;
  21.     }
  22.     public void setUser(UserDto user) {
  23.         this.user = user;
  24.     }
  25. }

UserService.java:

Code   ViewPrint
  1. package com.menglanglang.ssh.demo.service;
  2. import com.menglanglang.ssh.demo.dao.UserDAO;
  3. import com.menglanglang.ssh.demo.dto.UserDto;
  4. public class UserService {
  5. //  private UserDAO userDAO = new UserDAOImpl();
  6.     private UserDAO userDAO;
  7.     public UserDAO getUserDAO() {
  8.         return userDAO;
  9.     }
  10.     public void setUserDAO(UserDAO userDAO) {
  11.         this.userDAO = userDAO;
  12.     }
  13.     public void add(UserDto u) {
  14.         userDAO.save(u);
  15.     }
  16. }

第六步,运行测试。

再次运行项目,看看加入的 Spring 配置好不好用。

如果报错如下:

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.

则说明少个日志包,从 http://commons.apache.org/proper/commons-logging/download_logging.cgi 下载 commons-logging-1.2.jar,并添加到项目中,再次运行,则错误消失。

到这里,Spring 的已经集成到了搭建的框架中。

但是目前,只是简单的对 Spring 进行了集成,如何用 Spring 管理数据连接,如何管理事务操作,如何把 Hibernate 部分整合到 Spring 中,接下来的文章会一一讲解,敬请关注。

Come on!

给我留言

留言无头像?