SpringBoot----01.SpringBoot基本配置

一、spring-boot-starter-parent

当我们通过 spring initializr 创建springboot项目时都会发现 spring-boot-starter-parent 的身影,那么他到底是干啥的呢?
这是 Spring Boot 的父级依赖,这样当前的项目就是 Spring Boot 项目了。spring-boot-starter-parent 是一个特殊的 starter,它用来提供相关的 Maven 默认依赖。使用它之后,常用的包依赖可以省去 version 标签。先来看 parent 的基本功能有哪些?

  1. Java的默认版本为1.8
  2. 编码格式默认为 UTF-8
  3. 自动的资源过滤和插件配置
  4. 执行打包操作的配置
  5. 继承自 spring-boot-dependencies,这个里边定义了依赖的版本,也正是因为继承了这个依赖,所以我们在写依赖时才不需要写版本号。
  6. 针对 application.properties 和 application.yml 的资源过滤,包括通过 profile 定义的不同环境的配置文件,例如 application-dev.properties 和 application-dev.yml。

但是并非所有的公司都需要这个 parent ,有的时候,公司里边会有自己定义的 parent ,我们的 Spring Boot 项目要继承自公司内部的 parent ,这个时候该怎么办呢?一个简单的办法就是我们自行定义 dependencyManagement 节点,然后在里边定义好版本号,再接下来在引用依赖时也就不用写版本号了,像下面这样:

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.2.2.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

这样写之后,依赖的版本号问题虽然解决了,但是关于打包的插件、编译的 JDK 版本、文件的编码格式等等这些配置,在没有 parent 的时候,这些统统要自己去配置。

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>11</source> <!-- 源代码使用的JDK版本 -->
                    <target>11</target> <!-- 需要生成的目标class文件的编译版本 -->
                </configuration>
            </plugin>

        </plugins>
    </build>

maven是个项目管理工具,如果我们不告诉它我们的代码要使用什么样的jdk版本编译的话,它就会用maven-compiler-plugin默认的jdk版本来进行处理,这样就容易出现版本不匹配,以至于可能导致编译不通过的问题。maven的默认编译使用的jdk版本貌似很低,使用maven-compiler-plugin插件可以指定项目源码的jdk版本,编译后的jdk版本,以及编码。

二、@SpringBootApplication

之前我们使用的是3个注解注解他们的main类。分别是@SpringBootConfiguration(这个注解的作用与@Configuration作用相同),@EnableAutoConfiguration,@ComponentScan。由于这些注解一般都是一起使用,spring boot提供了一个统一的注解@SpringBootApplication。
@SpringBootApplication = (默认属性)@Configuration + @EnableAutoConfiguration + @ComponentScan。

  1. @Configuration:提到@Configuration就要提到他的搭档@Bean。使用这两个注解就可以创建一个简单的spring配置类,可以用来替代相应的xml配置文件。
  2. @EnableAutoConfiguration:能够自动配置spring的上下文,试图猜测和配置你想要的bean类,通常会自动根据你的类路径和你的bean定义自动配置。
  3. 使用过spring框架的小伙伴都知道,spring里有四大注解:@Component, @Repository, @Service, @Controller用来定义一个bean。@ComponentScan注解就是用来自动扫描指定包下被这些注解标识的类,最终生成ioc容器里的bean。

三、banner

我们只需要在 springboot 项目的 resources 文件夹下面创建一个 banner.txt 文件,springboot 启动的时候会去加载这个文件。

这里有几个定制banner的网站,文字、图片都可以秀起来,怎么秀就看你的骚操作了:

http://patorjk.com/software/taag

http://www.network-science.de/ascii/

http://www.degraeve.com/img2txt.php

                 .-' _..`.
                 /  .'_.'.'
                | .' (.)`.
                ;'   ,_   `.
.--.__________.'    ;  `.;-'
|  ./               /
|  |               / 
`..'`-._  _____, ..'
    / | |     | |\ \
   / /| |     | | \ \
  / / | |     | |  \ \
 /_/  |_|     |_|   \_\
|__\  |__\    |__\  |__\

四、WEB容器配置

在 springboot 项目中,可以内置Tomcat、Jetty、Undertow、Netty等容器,当添加了 spring-boot-starter-web 依赖之后,会默认使用 Tomcat 作为 web 容器。当我们需要对Tomcat进行配置的时候可以在 application.properties 配置文件中配置。

server.port=8084 
server.error.path=/error
server.servlet.session.timeout=30m
server.servlet.context-path=/test01
server.tomcat.uri-encoding=utf-8
server.tomcat.max-threads=200

四、HTTPS配置

在JDK\bin下通过命令行生成数字证书,然后将文件复制到项目的根目录:

keytool -genkey -alias tomcathttps -keyalg RSA -keysize 2048 -keystore zhang.p12 -validity 365

然后在application.properties中配置

server.ssl.key-store=zhang.p12
server.ssl.key-alias=tomcathttps
server.ssl.key-store-password=123456

五、Jetty

Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。

特点:

  1. 异步的 Servlet,支持更高的并发量。
  2. 模块化的设计,更灵活,更容易定制,也意味着更高的资源利用率。
  3. 在面对大量长连接的业务场景下,Jetty 默认采用的 NIO 模型是更好的选择。
  4. 将jetty嵌入到应用中,使一个普通应用可以快速支持 http 服务。

配置 Jetty

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency>
    </dependencies>

六、Undertow

Undertow 是红帽公司开发的一款基于 NIO 的高性能 Web 嵌入式服务器。

特点:

  1. 轻量级:它是一个 Web 服务器,但不像传统的 Web 服务器有容器概念,它由两个核心 Jar 包组成,加载一个 Web 应用可以小于 10MB 内存
  2. Servlet3.1 支持:它提供了对 Servlet3.1 的支持
  3. WebSocket 支持:对 Web Socket 完全支持,用以满足 Web 应用巨大数量的客户端
  4. 嵌套性:它不需要容器,只需通过 API 即可快速搭建 Web 服务器

配置 Undertow

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-undertow</artifactId>
        </dependency>
    </dependencies>

七、application.properties

在使用 Spring Boot 的过程中,除了可以在 pom.xml 中配置一些内容外,一些项目相关的配置也可以在 application.properties 中通过配置来完成。
配置文件4个位置及优先级高→低:

  • 项目的根目录下的 config 文件夹中
  • 项目根目录
  • classpath 下的 config 文件夹中
  • classpath 下

八、Springboot的常规属性配置和类型安全配置

  1. 类型常规配置:
    通过在properties文件中注入键值对的方式,在java代码中通过@Value注解注入值
  2. 类型安全配置:
    将要注入的属性包装成一个类,给类加上注解:@ConfigrationProperties(prefix="author")该注解用于绑定属性。prefix用来选择属性的前缀

九、YAML

YAML 是 "YAML Ain't markup language" 的缩写,是一种对人类设计友好的数据序列化语言,可以很好地与其它编程语言协同完成日常任务。它是JSON的一个严格超集。
基本规则:

  1. 文件名以.yaml(.yml)结尾
  2. 大小写敏感
  3. 不允许使用Tab。由于Tab的支持性不够普通,因此使用空格。

十、Profile

在项目的开发中,有些配置文件在开发、测试或者生产等不同环境中可能是不同的,例如数据库连接、redis的配置等等。那我们如何在不同环境中自动实现配置的切换呢?Spring给我们提供了profiles机制,下面看看在Spring Boot中是如何使用Profiles功能的。

激活指定profile:

  1. 我们在首先在Resource目录下新建两个配置文件,分别命名为application-dev.properties以及application-prod.properties。
  2. 配置 application.properties :
    spring.profiles.active=dev


posted @ 2019-12-19 23:11  丫头的星星  阅读(479)  评论(0编辑  收藏  举报