SpringBoot-初体验

JAVA学习网 2020-12-27 23:10:06

SpringBoot简介

概述

SpringBoot是Spring生态的一个模块,现在有2个版本,但是SpringBoot2版本的更新幅度非常大,而且小版本更新也非常快!

在spring官网下划有2段话,就能看出Spring Boot的地位

With Spring Boot in your app, just a few lines of code is all you need to start building services like a boss.

--在应用程序中使用Spring Boot,仅需要几行代码就可以构建服务
Originally [Netflix's Java] libraries and frameworks were built in-house. 
I'm very proud to say, as of early 2019, we've moved our platform almost entirely over to Spring Boot.”

作用

Spring Boot makes it easy to create stand-alone, 
production-grade Spring based Applications that you can "just run".

--能快速创建出生产级别的Spring应用

特性

- Create stand-alone Spring applications
  创建独立的Spring应用程序
- Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files)
  直接嵌入Tomcat,Jetty或Undertow(无需部署WAR文件)
- Provide opinionated 'starter' dependencies to simplify your build configuration
  自动starter依赖,简化构建配置
- Automatically configure Spring and 3rd party libraries whenever possible
  自动配置Spring以及第三方功能
- Provide production-ready features such as metrics, health checks, and externalized configuration
  提供生产级别的监控、健康检查及外部化配置
- Absolutely no code generation and no requirement for XML configuration
  无代码生成、无需编写XML

参考地址

SpringBoot官网地址:https://spring.io/projects/spring-boot

SpringBoot版本说明:https://github.com/spring-projects/spring-boot/wiki#release-notes

SpringBoot结构

SpringBoot入门

SpringBoot入门可以参考地址:

https://docs.spring.io/spring-boot/docs/2.3.7.RELEASE/reference/html/getting-started.html#getting-started

系统要求

工具 说明
JDK java8,兼容Java15
Maven 3.3+
或者Gradle 6(6.3或更高版本)

创建maven工程

引入依赖

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

创建主程序

@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class, args);
    }
}

编写业务

@RestController
public class HelloController {
    @RequestMapping("/hello")
    public String hello() {
        return "hello SpringBoot!";
    }
}

运行程序

执行主程序,浏览器发送:http://localhost:8080/hello

配置文件

web程序中有各种配置比如端口等,SpringBoot有默认值,但是也可以创建配置文件进行更改

配置的参考地址:https://docs.spring.io/spring-boot/docs/2.3.7.RELEASE/reference/html/appendix-application-properties.html#common-application-properties

比如:创建application.properties文件

server.port=9999

此时浏览器发送的地址为:http://localhost:9999/hello

简化部署

pom.xml

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

然后就可以把项目打成jar包,之后直接在目标的服务器执行即可!

上面是用maven创建的项目然后进行编写,在IDE中可以使用项目初始化向导(Spring Initailizr)



入门程序的说明

看一下引入的pom依赖

<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.7.RELEASE</version>

点进去可见有一个父项目的依赖
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.3.7.RELEASE</version>

接着点进去就可以看见里面有各种依赖,在里面搜索spring-boot-starter-web,可以看见
 <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.3.7.RELEASE</version>
  </dependency>

ps:看见各种的spring-boot-starter-*,这是SpringBoot内置的启动器,表示此场景下所需的依赖都进行导入

starter参考地址:

https://docs.spring.io/spring-boot/docs/2.3.7.RELEASE/reference/html/using-spring-boot.html#using-boot-starter

看一下引入spring-boot-starter-web之后的jar包继承图

总结一下SpringBoot的自动配置特点

  • 内嵌tomcat服务器

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <version>2.3.7.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    
  • 具有SpringMVC的功能,也就是SpringMVC的常用组件默认也都能做

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>5.2.12.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.12.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    
  • 默认的包结构:主程序所在包及其下面的所有子包里面的组件都会被默认扫描进来,依靠的就是@SpringBootApplication注解

  • 具有默认配置

    引入所需的场景starter之后,就有了此starter的默认配置,是以类展现的

    比如:

    public class Tomcat {
    
     	protected Server server;
        protected int port = 8080;
        protected String hostname = "localhost";
        protected String basedir;
    ------------------------------------------------------------    
     @ConfigurationProperties(
        prefix = "spring.servlet.multipart",
        ignoreUnknownFields = false
    )
    public class MultipartProperties {
        private boolean enabled = true;
        private String location;
        private DataSize maxFileSize = DataSize.ofMegabytes(1L);
        private DataSize maxRequestSize = DataSize.ofMegabytes(10L);
        private DataSize fileSizeThreshold = DataSize.ofBytes(0L);
        private boolean resolveLazily = false;
    
阅读(780) 评论(0)