zoukankan      html  css  js  c++  java
  • Spring Boot常用配置

    概述

        本文主要写了下Spring Boot的一些常用配置。


    Spring Boot基本配置

        入口类:

            Spring Boot通常有一个名为*Application的入口类,入口类里面有一个main方法,这个main方法其实就是一个标准的Java应用的入口方法。在main方法中使用SpringApplication.run(*Application.class, args),启动Spring Boot应用项目。

        @SpringBootApplication:

            @SpringBootApplication是Spring Boot的核心注解,它是一个组合注解,源码如下:

     1 //
     2 // Source code recreated from a .class file by IntelliJ IDEA
     3 // (powered by Fernflower decompiler)
     4 //
     5 
     6 package org.springframework.boot.autoconfigure;
     7 
     8 import java.lang.annotation.Documented;
     9 import java.lang.annotation.ElementType;
    10 import java.lang.annotation.Inherited;
    11 import java.lang.annotation.Retention;
    12 import java.lang.annotation.RetentionPolicy;
    13 import java.lang.annotation.Target;
    14 import org.springframework.context.annotation.ComponentScan;
    15 import org.springframework.context.annotation.Configuration;
    16 
    17 @Target({ElementType.TYPE})
    18 @Retention(RetentionPolicy.RUNTIME)
    19 @Documented
    20 @Inherited
    21 @Configuration
    22 @EnableAutoConfiguration
    23 @ComponentScan
    24 public @interface SpringBootApplication {
    25     Class<?>[] exclude() default {};
    26 
    27     String[] excludeName() default {};
    28 }
    SpringBootApplication源码

            @SpringBootApplication注解主要组合了@Configuration、@EnableAutoConfiguration、@ComponentScan;若不使用@SpringBootApplication注解,则可以在入口类上直接使用@Configuration、@EnableAutoConfiguration、@ComponentScan。

            其中,@EnableAutoConfiguration让Spring Boot根据类路径中的jar包依赖为当前项目进行自动配置。例如,添加了spring-boot-starter-web依赖,会自动添加Tomcat和Spring MVC的依赖,那么Spring Boot会对Tomcat和Spring MVC进行自动配置。

            Spring Boot会自动扫描@SpringBootApplication所在类的同级包以及下级包里的Bean。建议入口类放置的位置在groupId+arctifactID组合的包名下。

        关闭特定的自动配置:

            通过上面的@SpringBootApplication的源码可以看出,关闭特定的自动配置应该使用@SpringBootApplication注解的exclude参数,例如:@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})。

        Banner:

            Banner是Spring Boot启动时候显示的一个启动图案,我们可以修改或关闭它。

            修改Banner:

                在scr/main/resources下新建一个banner.txt即可,里面写上你想要的图案。(注:可以去http://patorjk.com/software/taag/生成一个)。

            关闭Banner:

    1 //关闭Banner有两种方式,都是修改main里面的内容。
    2         //1:
    3         new SpringApplicationBuilder(Ch623Application.class).showBanner(false).run(args);
    4         //2:
    5         SpringApplication springApplication = new SpringApplication(Ch623Application.class);
    6         springApplication.setShowBanner(false);
    7         springApplication.run(args);
    关闭Banner

        Spring Boot的配置文件:

            Spring Boot使用一个全局的配置文件application.properties或application.yml,放置在src/main/resources目录或者类路径的/config下。

            Spring Boot不仅支持常规的properties配置文件,还支持yaml语言的配置文件。yaml是以数据为中心的语言,在配置数据的时候具有面向对象的特征。

            Spring Boot的全局配置文件的作用是对一些默认配置的配置值进行修改。

            例:修改Tomcat的默认端口号,并将默认的访问路径“/”修改为“/helloboot”,就可以在配置文件中加上下面的代码。

                server.port=9090

                server.CONTEXT_PATH=/helloboot

        starter pom:

            Spring Boot为我们提供了简化企业级开发绝大多数场景的starter pom,只要使用了应用场景所需要的starter pom,相关的技术配置将会消除,就可以得到Spring Boot为我们提供的自动配置的Bean。

            可以去Spring Boot官网找到其提供了哪些starter pom。

        使用xml配置:

            Spring Boot提倡零配置,即无xml配置,但是在实际项目中,可能有一些特殊要求你必须使用xml配置,这时我们可以通过Spring提供的@ImportResource来加载xml配置。

            例:@ImportResource({"classpath:som-context.xml","classpath:another-context.xml"})

    Spring Boot外部配置

        Spring Boot除了上面的配置外,还允许使用properties文件、yaml文件或者命令行参数作为外部配置。

        命令行参数配置:

            Spring Boot可以是基于jar包运行的,打成jar包的程序可以直接通过命令运行:java -jar xx.jar。

            可以通过命令修改Tomcat端口号:java -jar xx.jar --server.port=9090。

        常规属性配置:

            在Spring中,可以通过注入properties文件里的值的方式,并使用@PropertySource指明properties文件的位置,然后通过@Value注解注入值。

            在Spring Boot里,我们只需要在application.properties定义属性,直接使用@Value注入即可。

            例如:

    1 //application.properties中写下如下代码
    2     //book.author=gaof
    3     //book.name=spring boot
    4     //然后注入。
    5     @Value("${book.author}")
    6     private String bookAuthor;
    7     @Value("${book.name}")
    8     private String bookName;

        类型安全的配置(基于properties):

            上面使用@Value注入每个配置在实际项目中会显得格外麻烦,因为我们的配置通常会是许多个,若使用上面的方式则要使用@Value注入很多次。

            Spring Boot还提供了基于类型安全的配置方式,通过@ConfigurationProperties将properties属性和一个Bean及其属性关联,从而实现类型安全的配置。

            例如:

     1 package com.wisely.ch6_2_3.config;
     2 
     3 import org.springframework.boot.context.properties.ConfigurationProperties;
     4 import org.springframework.stereotype.Component;
     5 
     6 /**
     7  * 在application.properties中写下如下代码
     8  *      author.name=gaof
     9  *      author.age=32
    10  * 然后使用@ConfigurationProperties注解的prefix指定properties里面配置的 前缀。
    11  * 
    12  * 若需指定其他的配置文件,则需添加属性locations。
    13  */
    14 @Component
    15 @ConfigurationProperties(prefix = "author")
    16 //@ConfigurationProperties(prefix = "author", locations = {"classpath:config/author.properties"})
    17 public class AuthorSettings {
    18     private String name;
    19     private Long age;
    20 
    21     public String getName() {
    22         return name;
    23     }
    24 
    25     public void setName(String name) {
    26         this.name = name;
    27     }
    28 
    29     public Long getAge() {
    30         return age;
    31     }
    32 
    33     public void setAge(Long age) {
    34         this.age = age;
    35     }
    36 }

         注:使用了类型安全配置的类在别的类中使用时须在类上面加上@EnableConfigurationProperties声明,开启属性注入。

    日志配置

        Spring Boot支持Java Util Logging、Log4J、Log4J2和Logback作为日志框架,无论使用哪种日志框架,Spring Boot都已为当前使用日志框架的控制台输出及文件输出做好了配置。

        默认情况下,Spring Boot使用Logback作为日志框架。

        配置日志级别:logging.level.org.springframework.web = DEBUG;格式:logging.level.包名=级别。

        配置日志文件:logging.file=D:/mylog/log.log。

    Profile配置

        Profile是Spring用来针对不同的环境对不同的配置提供支持的,全局Profile配置使用application-{profile}.properties。

        通过在application.properties中设置spring.profiles.active=prod来指定活动的Profile。

        例如:

            

            

  • 相关阅读:
    低级错误之Hbm中类型不一致错误
    低级错误之Oracle客户端添加数据
    低级错误之页面中action的请求地址与action中写的requsetmapping不一致
    低级错误之删除存在关联的表报错
    低级错误之方法自调陷入死循环
    Notepad++的一些常用的快捷键
    [css]inline-block
    框架开发之Java注解的妙用
    面试必备【含答案】Java面试题系列(二
    Kotlin:数组、字符串模板
  • 原文地址:https://www.cnblogs.com/gaofei-1/p/8976376.html
Copyright © 2011-2022 走看看