zoukankan      html  css  js  c++  java
  • spring boot web 入门

    ① 新建一个maven项目。

    ② pom中parent设为 spring-boot-starter-parent 。建议使用最新的 RELEASE 版本。否则可能需要设置 <repositories/> <pluginRepositories/> 。

    ③ 添加应用需要的starter模块,作为示例,我们仅添加web starter模块。

      这里需要解释下starter模块,简单的说,就是一系列的依赖包组合。例如web starter模块,就是包含了Spring Boot预定义的一些Web开发的常用依赖:

    ○ spring-web, spring-webmvc ================>>Spring WebMvc框架
    ○ tomcat-embed-* ================>> 内嵌Tomcat容器
    ○ jackson ================>> 处理json数据
    ○ spring-* ================>> Spring框架
    ○ spring-boot-autoconfigure ================>> Spring Boot提供的自动配置功能

    换句话说,当你添加了相应的starter模块,就相当于添加了相应的所有必须的依赖包。

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>cn.larry.spring</groupId>
        <artifactId>larry-spring-demo4</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.4.0.RELEASE</version>
        </parent>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
        </dependencies>
    </project>
    package cn.larry.spring.controller;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    @Controller
    @EnableAutoConfiguration
    public class SampleController {
    
        @RequestMapping("/")
        @ResponseBody
        String home() {
            return "Hello World!";
        }
    
        public static void main(String[] args) throws Exception {
            SpringApplication.run(SampleController.class, args);
        }
    }

    @EnableAutoConfiguration 用于自动配置。简单的说,它会根据你的pom配置(实际上应该是根据具体的依赖)来判断这是一个什么应用,并创建相应的环境。

    在上面这个例子中,@EnableAutoConfiguration 会判断出这是一个web应用,所以会创建相应的web环境。

    SpringApplication 则是用于从main方法启动Spring应用的类。默认,它会执行以下步骤:

    1. 创建一个合适的ApplicationContext实例 (取决于classpath)。
    2. 注册一个CommandLinePropertySource,以便将命令行参数作为Spring properties。
    3. 刷新application context,加载所有单例beans。
    4. 激活所有CommandLineRunner beans。

    默认,直接使用SpringApplication 的静态方法run()即可。但也可以创建实例,并自行配置需要的设置。

    默认访问地址: http://localhost:8080/

    按照之前的web项目习惯,你可能会问,怎么没有项目路径?

    这就是Spring Boot的默认设置了,将项目路径直接设为根路径。

    当然,我们也可以设置自己的项目路径 -- 在classpath下的 application.properties 或者 application.yaml 文件中设置即可。

    # application.properties
    # Server settings (ServerProperties)
    server.port=8080
    server.address=127.0.0.1
    #server.sessionTimeout=30
    server.contextPath=/aaa
    
    # Tomcat specifics
    #server.tomcat.accessLogEnabled=false
    server.tomcat.protocolHeader=x-forwarded-proto
    server.tomcat.remoteIpHeader=x-forwarded-for
    server.tomcat.basedir=
    server.tomcat.backgroundProcessorDelay=30

    上面, server.contextPath=/aaa 就是设置了项目路径。所以现在需要访问 http://localhost:8080/aaa/ 才行。

    分析

    OK,当目前为止,已经成功运行并访问了一个 SpringMVC 应用。简单的不能再简单了!

    再来看一下启动时的信息:

    第 9 行,启动SampleController。
    第10行,查找active profile,无,设为default。
    第11行,刷新上下文。
    第12行,初始化tomcat,设置端口8080,设置访问方式为http。
    第13行,启动tomcat服务。
    第14行,启动Servlet引擎。
    第15行,Spring内嵌的WebApplicationContext 初始化开始。
    第16行,Spring内嵌的WebApplicationContext 初始化完成。
    第17行,映射servlet,将 dispatcherServlet 映射到 [/] 。
    第18行,映射filter,将 characterEncodingFilter 映射到 [/*] 。
    第19行,映射filter,将 hiddenHttpMethodFilter 映射到 [/*] 。
    第20行,映射filter,将 httpPutFormContentFilter 映射到 [/*] 。
    第21行,映射filter,将 requestContextFilter 映射到 [/*] 。
    第22行,查找 @ControllerAdvice。
    第23行,映射路径 "{[/]}" 到 cn.larry.spring.controller.SampleController.home()。
    第24行,映射路径 "{[/error]}" 到 org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)。
    第25行,映射路径 "{[/error],produces=[text/html]}" 到 org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)。
    第26行,略。 第27行,略。 第28行,略。 第29行,略。
    第30行,tomcat启动完毕。
    第31行,SampleController启动耗费的时间。
    第32行,初始化 dispatcherServlet 。
    第33行,dispatcherServlet 的初始化已启动。
    第34行,dispatcherServlet 的初始化已完成。
    第35行,收到shutdown关闭请求。
    第36行,关闭AnnotationConfigEmbeddedWebApplicationContext。
    第37行,略。

    从上面的启动信息中可以明显看到SpringMVC的加载过程,特别需要注意的是这种默认方式下加载的几个 filter 。

  • 相关阅读:
    P1280 尼克的任务
    P2286 [HNOI2004]宠物收养场
    筛法求素数
    拓扑排序
    观光旅游
    [USACO09OCT]热浪Heat Wave
    Java环境变量配置
    git 常用命令
    mysql-5.7安装、配置
    maven-java包管理工具-01
  • 原文地址:https://www.cnblogs.com/zhangjianbin/p/6349520.html
Copyright © 2011-2022 走看看