Spring、SpringMVC、SpringData + JPA 整合详解

之前详细讲解过了 JPA 和 SpringData,包括 Spring 和 SpringMVC 也进行了详细的讲述。很早就想来一个整合了,因为事情比较多,所以就一直拖着。

那么现在就来说说 Spring + SpringMVC + SpringData + JPA(下文中简写为 SSSP) 的整合,SSSP 的整合之后再来写一个  CRUD 的小案例,LZ 不打算把增删改查都来一遍了,只介绍一个查询所有员工信息,然后分页显示即可。大家可以对比在 JavaWeb 的过程中写的分页查询,看一看是否简单的许多。下面进行详细的介绍~

一、加入 Spring

1. 首先当然要新建一个动态的 WEB 的工程了,取名 sssp

2. 加入 Spring 的 jar 包,观察这些 jar 包,大家可以发现其中既包含了 Spring 的 jar 包,也包含了 SpringMVC 的 jar 包

3. web.xml 中配置启动 Spring IOC 的 ContextLoaderListener

复制代码
1 
2     
3         contextConfigLocation
4         classpath:applicationContext.xml
5     
6 
7     
8         class>org.springframework.web.context.ContextLoaderListenerclass>
9     
复制代码

其中 LZ 配置的 Spring 的配置文件在 classpath 下,取名为 applicationContext.xml 

4. 这一步当然就是在类路径下创建 Spring 的配置文件:applicationContext.xml 了,在这里先创建好,稍后进行配置。

二、加入 SpringMVC

1. 首先呢肯定要想到的是先导入 jar 包,这里在加入 Spring 的时候已经导入,前面也已经做了说明。

2. web.xml 中配置 SpringMVC 的 DispatcherServlet

复制代码
 1 
 2     
 3     
 4         springDispatcherServlet
 5         class>org.springframework.web.servlet.DispatcherServletclass>
 6         1
 7     
 8 
 9     
10         springDispatcherServlet
11         /
12     
复制代码

在这里呢 LZ 删除了一部分配置,我们使用默认的 SpringMVC 的配置文件,这个默认的 SpringMVC 的配置文件的名字为 :springDispatcherServlet-servlet.xml ,需要注意的是,若使用默认的配置文件,文件的位置需要在 WEB-INF 目录下

3. 在 WEB-INF 目录下新建 SpringMVC 的配置文件: springDispatcherServlet-servlet.xml (注意:LZ 的 Eclipse 中是安装了 Spring 插件的,实质上 LZ 使用 Spring 的插件创建了 SpringMVC 的配置文件,只是文件名不同而已)

4. 然后我们对 SpringMVC 的配置文件 springDispatcherServlet-servlet.xml 进行配置

1)加入命名空间,因为我们在新建配置文件的时候没有加入命名空间,所以先加入 context 和 mvc 的命名空间。那么如何加入呢,当我们打开 SpringMVC 的配置文件后,大家可以看到文件的左下角有一些选项卡(如下面图片所示),大家点击第二个选项 Namespaces,

点开后大家吧 context 和 mvc 选项挑上对勾即可。

2)配置自动扫描的包

1 
2     <context:component-scan base-package="com.software.sssp" use-default-filters="false">
3         <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
4         <context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice" />
5     context:component-scan>

在配置自动扫描的包时,LZ 使用了 context:include-filter 子标签,目的就是让 SpringMVC 只扫描带有 @Controller 和 @ControllerAdvice 注解的包中的类,为什么要这样做呢?因为我们加入 Spring 的时候只创建了 Spring 的配置文件,还没有进行配置,一会我们配置的时候,也会先配置 Spring 的 IOC 扫描的包,这样就有可能出现某些包 Spring 的容器扫描了一遍,SpringMVC 又扫描了一遍,这样就会造成有些对象会创建多次,造成资源的浪费,配置 context:include-filter 标签就是为了解决这个问题,让 Spring 和 SpringMVC 只扫描各自关注的包即可。

本文由“程序员小专家”发布,2017年11月2日

你可能感兴趣的:(Spring、SpringMVC、SpringData + JPA 整合详解)