Eclipse搭建Maven工程集成Spring4

    这次,我们将以使用Maven创建web项目为基础,集成Spring4.2.4。

    亲可以参考:

        1、Maven安装以及在eclipse中的配置

        2、Eclipse中使用Maven创建基本的web项目

1、Maven安装以及在eclipse中的配置

    请参考:Maven安装以及在eclipse中的配置

2、Eclipse中使用Maven创建基本的web项目

    请参考:Eclipse中使用Maven创建基本的web项目

3、集成Spring(MVC)

    3.1、添加依赖(即jar包)

    访问Spring Framework 官 网 ,通过 文 档 我们能看到以下构件:

01

    我们只需要知道GroupIdArtifactId就能通过Maven获取对应的jar包,接下来就把需要的jar包添加到工程中。

    ps:这里再介绍一个获取jar的方法,可以通过访问 http://mvnrepository.com/ ,搜索自己需要的jar即可获取GroupIdArtifactId
    另一个是:http://search.maven.org/ ,都挺好用的,这里以第一个为例。

    先通过关键字搜索,然后选择对应的工具:

02

    选择要使用的版本:

03

    获取配置信息:

04

    好了,(几乎上是)完事具备了,那就开始引入jar,打开pom.xml文件,开始添加依赖,此处有两种添加方式

    1、直接编辑xml文件:

05

    2、使用插件提供的工具:

06

    具体使用什么方式,就看个人喜好了,我们依次添加jar包如下:

  <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>
        <!-- Spring -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>
    </dependencies>

    PS:此处本人遇到一个问题:Failed to read artifact descriptor for org.springframework:spring-context。上 stackoverflow 翻来翻去也没找到答案,于是好奇的试了下4.2.3版本的Spring,发现就正常了,就怀疑是从中央库下载文件时出错了,所以进到本地仓库,路径为C:\Users\(你的用户名)\.m2\repository,删除了spring相关的文件,pom文件重新配置为4.2.4后错误就没了。

    另外,如果java版本相关的错误,可以在pom文件内添加指定版本:

<build>
        <finalName>Spring4Hibernate5MVC</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    如果还有其他问题,请在回复中询问,共同探讨。

    3.2、配置web.xml

    编辑src/main/webapp/WEB-INF/下的web.xml:

07

    添加Spring监听:

<web-app>
    <display-name>Archetype Created Web Application</display-name>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
</web-app>

    配置SpringMVC,完成后web.xml文件最终如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="schedule-console" version="3.0">
    <display-name>Archetype Created Web Application</display-name>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath*:springmvc-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

    3.3、编写applicationContext.xml

    在src/main/resource/下新建applicationContext.xml文件:

08

    编写配置,完整配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
         http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
         http://www.springframework.org/schema/context
         http://www.springframework.org/schema/context/spring-context-4.2.xsd
         http://www.springframework.org/schema/tx
         http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
         http://www.springframework.org/schema/aop 
         http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
         http://www.springframework.org/schema/mvc 
         http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd">
    <!-- 开启IOC注解扫描 -->
    <context:component-scan base-package="com.anxpp.demo" />
    <!-- 开启MVC注解扫描 -->
    <mvc:annotation-driven />
    <!-- 以下为视图映射配置 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
    </bean>
    <!-- 其他配置 -->
    <!-- 静态文件访问 -->
    <mvc:default-servlet-handler />
</beans>

    3.4、编写测试代码

    com.anxpp.demo.controller.DemoConreoller.java:

//DemoConreoller.java
package com.anxpp.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/")
public class DemoConreoller {
    @RequestMapping("/")
    public String index(){//返回网页
        return "index";
    }
    @RequestMapping("/test")
    @ResponseBody//实现直接返回字符串
    public String testRerutnString(){//返回字符串
        return "Hello Word!";
    }
}

    src/main/webapp/WEB-INF/views/index.jsp:

<html>
<body>
<h2>Hello World!</h2>
</body>
</html>

    3.5、首次运行测试

    首次运行,主要是从事Spring是否集成完成,使用是否正常,直接在Eclipse中使用Tomcat运行即可:

09

    浏览器输入:http://localhost:8080/Spring4Hibernate5MVC/

10

    浏览器输入:http://localhost:8080/Spring4Hibernate5MVC/test

11

    至此,一个SpringMVC的Maven项目就搭建好了,如果不需要其他框架,便可以直接使用了。

    3.6、添加返回json支持

    相关的jar包支持,jackson:

      <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.5.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.5.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.5.0</version>
        </dependency>

    官网的内容视图解析器实例配置:

13

    这里,我们就直接拷贝下来放进applicationContext.xml中:

  <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
        <property name="viewResolvers">
            <list>
                <bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
                <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                    <property name="prefix" value="/WEB-INF/jsp/" />
                    <property name="suffix" value=".jsp" />
                </bean>
            </list>
        </property>
        <property name="defaultViews">
            <list>
                <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" />
            </list>
        </property>
    </bean>

    现在我们将接口方法返回值改为map即可返回json格式的数据了:

12

    3.7、下载

    这里给出仅含有SpringMVC的项目源码下载:

    1、Spring4Maven.7z

    2、源码中没有增加返回json数据格式的模块,如果需要,直接按照上面的方法,在applicationContext.xml中配置内容视图解析器,再在pom.xml中添加jackson相关的3个jar包依赖即可。

    注意:这里工程名为Spring4Hibernate5MVC,但实际上是不含Hibernate5的,起这个名字主要是因为马上要集成Hibernate5,就直接把两个框架塞进工程名里面了。

4、更上一层

    4.1、Spring4MVC的Maven工程集成Hibernate5