美文网首页
Spring Boot 入门

Spring Boot 入门

作者: 深入浅出 | 来源:发表于2018-07-13 16:07 被阅读0次

    Spring Boot 官网

    WHAT 什么是 Spring Boot?

    • 简化 Spring 应用开发的一个框架(约定 > 配置 > 编码)
    • 整个Spring 技术栈的一个大整合
    • J2EE 开发的一站式解决方案

    WHY 为什么使用 Spring Boot?

    • 快速创建独立运行的Spring项目以及与主流框架集成
    • 使用嵌入式的Servlet容器,应用无需打成WAR包
    • starters自动依赖与版本控制
    • 大量的自动配置,简化开发,也可修改默认值
    • 无需配置XML,无代码生成,开箱即用
    • 准生产环境的运行时应用监控
    • 与云计算的天然集成

    HOW 如何使用 Spring Boot?

    本机开发环境
    • java version "1.8.0_144"
    • Apache Maven 3.3.9
    • IntelliJIDEA 2018
    • Spring Boot 1.5.15
    Maven设置

    \apache-maven-3.3.9\conf\settings.xml

    <profile>
        <id>jdk-1.8</id>
        <activation>
            <activeByDefault>true</activeByDefault>
            <jdk>1.8</jdk>
        </activation>
        <properties>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
            <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
        </properties>
    </profile>
    
    IDEA设置

    快速开始

    package com.example.helloworld;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    /**
     * @SpringBootApplication 标注一个主程序类,说明这是一个 Spring Boot 应用
     */
    @SpringBootApplication
    public class HelloworldApplication {
    
        // main函数快捷键是psvm
        public static void main(String[] args) {
            // 启动 Spring 应用
            SpringApplication.run(HelloworldApplication.class, args);
        }
    }
    

    编写 Controller

    package com.example.helloworld.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    @Controller
    public class HelloController {
    
        @ResponseBody
        @RequestMapping("/hello")
        public String hello() {
            return "Hello World!";
        }
    
    }
    

    启动:


    测试:
    http://localhost:8080/hello

    POM 文件分析

    父项目

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.15.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    

    父项目依赖的父项目

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>1.5.15.RELEASE</version>
        <relativePath>../../spring-boot-dependencies</relativePath>
    </parent>
    

    管理Spring Boot应用里面的所有依赖版本

    导入依赖默认不需要写版本号;(没有在dependencies里面管理的依赖需要声明版本号)

    导入的依赖

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
    

    spring-boot-starterspring-boot场景启动器;导入了web模块正常运行所依赖的组件;

    帮助文档


    Spring Boot将所有的功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入这些starter,相关场景的所有依赖都会导入进来。

    Spring Boot 主程序分析

    @SpringBootApplication
    public class HelloworldApplication {
        // main函数快捷键是psvm
        public static void main(String[] args) {
            // 启动 Spring 应用
            SpringApplication.run(HelloworldApplication.class, args);
        }
    }
    

    @SpringBootApplication标注在某个类上说明这个类是Spring Boot的主配置类,Spring Boot
    就应该运行这个类的main方法来启动Spring Boot应用。

    点击@SpringBootApplication进入

    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Inherited
    @SpringBootConfiguration
    @EnableAutoConfiguration
    @ComponentScan(
        excludeFilters = {@Filter(
        type = FilterType.CUSTOM,
        classes = {TypeExcludeFilter.class}
    ), @Filter(
        type = FilterType.CUSTOM,
        classes = {AutoConfigurationExcludeFilter.class}
    )}
    )
    public @interface SpringBootApplication {
    
    • @SpringBootConfigurationSpring Boot的配置类
      标注在某个类上,表示这是一个Spring Boot的配置类;

      • @Configuration:配置类上来标注这个注解
        配置类 <> 配置文件;
        • @Component
          配置类也是容器中的一个组件
    • @EnableAutoConfiguration:开启自动配置功能
      以前我们需要配置的东西,Spring Boot帮我们自动配置。

      • @AutoConfigurationPackage 自动配置包
        将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器
      • @Import({EnableAutoConfigurationImportSelector.class}) 给容器中导入组件
        将所有需要导入的组件以全类名的方式返回;这些组件就会被添加到容器中;
    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Inherited
    @AutoConfigurationPackage
    @Import({EnableAutoConfigurationImportSelector.class})
    public @interface EnableAutoConfiguration {
    

    Spring Boot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作。

    相关文章

      网友评论

          本文标题:Spring Boot 入门

          本文链接:https://www.haomeiwen.com/subject/rpfspftx.html