零XML配置 SpringMVC 进阶之路 - 搭建环境

写了快两年的Java代码了,发现自己居然不会搭建一套Spring mvc环境出来,只会添砖加瓦,说来就惭愧了,为了弥补这点的缺陷,也为了以后更好的借助已有的SpringMVC项目学习更多的知识,我决定从零搭建一套自己的SpringMVC。

网上搜索大部分都是基于XML配置的环境搭建,基于XML大部分是因为历史项目的原因无法切换成基于JavaConfig来进行配置,但是基于JavaConfig是未来的趋势,所以本系列的文章是零XML配置的,喜欢XML请自行搜索其他问问。

使用的基础环境如下:
- 系统: MacOS(也就是Linux系统)
- java版本: 1.8.0_151,下载地址
- Tomcat版本: 8.5.20, 下载地址
- Maven版本: 3.5.0,下载地址
- 开发工具: Intellij Idea

废话不多说,开始整起。

本篇的文章是搭建一套最简单的,只有HelloWorld的项目,目标是浏览器中输入一个URL,返回”HelloWorld”。

新建项目

现在一个普通的Maven项目,不要使用Archtype生成:
零XML配置 SpringMVC 进阶之路 - 搭建环境_第1张图片

填写自己的GroupId和ArtifactId,一路Next。

修改pom.xml

新生成的pom.xml,只有项目的groupId和artifactId:

   <groupId>com.cyfgroupId>
    <artifactId>baseartifactId>
    <version>1.0-SNAPSHOTversion>

增加依赖包

    <dependencies>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webmvcartifactId>
            <version>4.3.13.RELEASEversion>
        dependency>
        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>javax.servlet-apiartifactId>
            <version>3.1.0version>
        dependency>
    dependencies>

其中spring-webmvc就是我们要用的核心包,我们使用Spring4系列中最新的一个版本。
javax.servlet-api是基础包,servlet的很多依赖都在这个包里,需要引入,我们使用了3.1.0。
如果要使用其他版本的,请到maven库中搜索。

增加编译插件

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-compiler-pluginartifactId>
                <configuration>
                    <source>1.8source>
                    <target>1.8target>
                configuration>
            plugin>
        plugins>
    build>

增加packaging

一定要增加打包类型

    <packaging>warpackaging>

由于我没有增加打包类型为: war导致配置tomcat时无法找到Artifact,在网上找了很多解决方案都不行,加了这个配置就好。

增加WebAppInitializer

新建我们自己的package,然后增加类: MyWebAppInitializer

public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    //Spring 上下文配置
    @Override
    protected Class[] getRootConfigClasses() {
        return new Class[]{RootConfig.class};
    }

    //Servlet上下文配置
    @Override
    protected Class[] getServletConfigClasses() {
        return new Class[]{ServletConfig.class};
    }

    //mapping配置
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

增加配置类

Spring上下文配置类

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.cyf.base")
public class RootConfig {
}

@Configuration:
这是一个空类,只有一些注解其中,@Configuration标注这个类是配置类,后续我们会在这个类中添加一些Bean。
@EnableWebMvc:
启用WebMvc。
@ComponentScan(basePackages = “com.cyf.base”)
自动扫描com.cyf.base下的所有类。

注意,@EnableWebMvc和@ComponentScan(basePackages = “com.cyf.base”) 一定要放在一起,否则会有问题,项目能启动,但是拦截不到请求。

Servlet上下文配置类

@Configuration
public class ServletConfig extends WebMvcConfigurerAdapter {
}

这里的配置是继承了WebMvcConfigurerAdapter,它有很多默认的配置,不需要我们实现,当然我们可以覆盖它的默认实现,这里就不说了,后续有需要,我们再慢慢覆盖。

增加一个Controller

@RestController
@RequestMapping("/api")
public class TestController {
    @GetMapping("/hello")
    public Object hello(){
        return "helloWorld";
    }
}

不用详细说了,稍微开发过SpringMvc的都清楚。

部署

这里直接在Idea部署到了tomcat上,这里就不重复造轮子了,到网上随便找找有很多,比如Idea部署tomcat。

运行

运行后,浏览器中输入:
http://localhost:8080/api/hello

零XML配置 SpringMVC 进阶之路 - 搭建环境_第2张图片

到此为止,一个最最简单的基于JavaConfig配置的SpringMVC就出来了,是不是很简单。
最后附上项目结构图:
零XML配置 SpringMVC 进阶之路 - 搭建环境_第3张图片

你可能感兴趣的:(Spring系列)