Eclipse搭建Maven工程集成Spring4
这次,我们将以使用Maven创建web项目为基础,集成Spring4.2.4。
亲可以参考:
1、Maven安装以及在eclipse中的配置
2、Eclipse中使用Maven创建基本的web项目
3、集成Spring(MVC)
3.1、添加依赖(即jar包)
访问Spring Framework 官 网 ,通过 文 档 我们能看到以下构件:
我们只需要知道GroupId和ArtifactId就能通过Maven获取对应的jar包,接下来就把需要的jar包添加到工程中。
ps:这里再介绍一个获取jar的方法,可以通过访问 http://mvnrepository.com/ ,搜索自己需要的jar即可获取GroupId和ArtifactId。
另一个是:http://search.maven.org/ ,都挺好用的,这里以第一个为例。
先通过关键字搜索,然后选择对应的工具:
选择要使用的版本:
获取配置信息:
好了,(几乎上是)完事具备了,那就开始引入jar,打开pom.xml文件,开始添加依赖,此处有两种添加方式
1、直接编辑xml文件:
2、使用插件提供的工具:
具体使用什么方式,就看个人喜好了,我们依次添加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:
添加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文件:
编写配置,完整配置如下:
<?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运行即可:
浏览器输入:http://localhost:8080/Spring4Hibernate5MVC/
浏览器输入:http://localhost:8080/Spring4Hibernate5MVC/test
至此,一个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>
官网的内容视图解析器实例配置:
这里,我们就直接拷贝下来放进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格式的数据了:
3.7、下载
这里给出仅含有SpringMVC的项目源码下载:
2、源码中没有增加返回json数据格式的模块,如果需要,直接按照上面的方法,在applicationContext.xml中配置内容视图解析器,再在pom.xml中添加jackson相关的3个jar包依赖即可。
注意:这里工程名为Spring4Hibernate5MVC,但实际上是不含Hibernate5的,起这个名字主要是因为马上要集成Hibernate5,就直接把两个框架塞进工程名里面了。