SpringBoot HelloWorld

一个功能:

浏览器发送一个hello请求,浏览器接受请求并处理,响应hello字符串

1. 创建一个maven工程(jar)

2. 导入SpringBoot相关依赖

maven选择自动导入

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.8.RELEASE</version>
</parent>

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

(1) 父项目

1
2
3
4
5
<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.8.RELEASE</version>
</parent>

它的父项目是

1
2
3
4
5
6
7
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.1.8.RELEASE</version>
    <relativePath>../../spring-boot-dependencies</relativePath>
 </parent>
来真正管理Spring Boot里的所有依赖

SpringBoot的版本仲裁中心;

导入依赖默认不需要写版本(没有在dependencies中进行管理的自然需要声明版本号)

(2) 导入的依赖

1
2
3
4
5
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>2.1.8.RELEASE</version>
</dependency>

Spring-boot-starter-web

  • spring boot场景启动器: 帮我们导入了web模块正常运行所依赖的组件

  • SpringBoot将所有功能场景都抽取出来,做成一个个starters(启动器),只需要在项目中引入这些starter,相关场景的所有依赖都会导入进来。要用什么功能就导入什么场景的启动器

3. 编写主程序

1
@SpringBootApplication	// 来标注一个主程序类,说明这是一个Spring Boot类

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
@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
  • @SpringBootConfiguration:SpringBoot的配置类

    标注在某个类上,表示这是一个Spring Boot配置类

  • @Configuration:配置类上标注这个注解

    配置类==配置文件;配置类也是容器中的一个组件;@Component

  • @EnableAutoConfiguration:开启自动配置功能

    以前我们需要配置的东西,SpringBoot自动帮我们配置

    1
    2
    3
    
    @AutoConfigurationPackage
    @Import({AutoConfigurationImportSelector.class})
    public @interface EnableAutoConfiguration 
    
  • @AutoConfigurationPackage:自动配置包

    @Import({Registrar.class})

    Spring的底层注解,@Import给容器中导入一个组件;导入的组件由Registrar.class

    将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件都扫描到Spring容器中。

  • @Import({AutoConfigurationImportSelector.class})

    给容器中导入组件,

    AutoConfigurationImportSelector.class:导入哪些组件的选择器

    将所有需要导入的组件以全类名的方式返回;

    这些组件就会被添加到容器中;

    会给容器中导入非常多的自动配置类(xxxAutoConfiguration);就是给容器中导入这个场景需要的所有组件,并配置好这些组件

    有了自动配置类,就免去了手动编写配置注入功能组件的工作

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

    J2EE的整体解决方案和自动配置都在spring-boot-autoconfiguration

4. 编写相关的Controller, Service

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
package com.haven.Controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @author HavenTong
 * @date 2019-09-09 00:56
 */

@Controller
public class HelloController {

    @ResponseBody
    @RequestMapping("/hello")
    private String hello(){
        return ("Hello World");
    }
}

5. 运行主程序测试

6. 简化部署

https://docs.spring.io/spring-boot/docs/2.1.8.RELEASE/reference/html/getting-started-first-application.html#getting-started-first-application-executable-jar

11.5

导入Spring Boot的maven插件

1
2
3
4
5
6
7
8
9
    <!-- 可以将应用打包成一个可执行的jar包    -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

侧边栏—>Maven—>项目—>LifeCycle—>package

1
java -jar

进行执行

7. 使用SpringBoot Initializer创建的项目

  • resources

    • static: 保存的所有静态资源 js, css, 图片

    • templates: 保存所有的模版页面。(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持jsp的页面);

      可以使用模版引擎(freemarker, thymeleaf);

    • **application.properties: **Spring Boot应用的配置文件