zoukankan      html  css  js  c++  java
  • 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配置

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

    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


  • 相关阅读:
    python_异常处理
    python_类与对象
    函数
    字符串(查找,替换,分割)
    容器类型的数据
    条件语句
    关于WinSock编程的多线程控制
    利用Delphi编写Socket通信程序
    SQL Server数据库开发的二十一条军规
    SQL Server中的日期格式化
  • 原文地址:https://www.cnblogs.com/zhangliuping/p/12070845.html
Copyright © 2011-2022 走看看