概述

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


Spring Boot基本配置

    入口类:

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

    @SpringBootApplication:

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

 //
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
// package org.springframework.boot.autoconfigure; import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration; @Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Configuration
@EnableAutoConfiguration
@ComponentScan
public @interface SpringBootApplication {
Class<?>[] exclude() default {}; String[] excludeName() default {};
}

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:

 //关闭Banner有两种方式,都是修改main里面的内容。
//1:
new SpringApplicationBuilder(Ch623Application.class).showBanner(false).run(args);
//2:
SpringApplication springApplication = new SpringApplication(Ch623Application.class);
springApplication.setShowBanner(false);
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注入即可。

        例如:

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

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

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

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

        例如:

 package com.wisely.ch6_2_3.config;

 import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component; /**
* 在application.properties中写下如下代码
* author.name=gaof
* author.age=32
* 然后使用@ConfigurationProperties注解的prefix指定properties里面配置的 前缀。
*
* 若需指定其他的配置文件,则需添加属性locations。
*/
@Component
@ConfigurationProperties(prefix = "author")
//@ConfigurationProperties(prefix = "author", locations = {"classpath:config/author.properties"})
public class AuthorSettings {
private String name;
private Long age; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Long getAge() {
return age;
} public void setAge(Long age) {
this.age = age;
}
}

    注:使用了类型安全配置的类在别的类中使用时须在类上面加上@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。

    例如:

        

        

Spring Boot常用配置的更多相关文章

  1. SSM和Spring Boot常用配置比较

    一.Dao层相关 1.Mysql相关: 1.1配置DataSource连接池: (1)SSM配置: <!-- 加密后配置自己写的解析文件 --> <bean class=" ...

  2. Sping Boot入门到实战之入门篇(四):Spring Boot自动化配置

    该篇为Sping Boot入门到实战系列入门篇的第四篇.介绍Spring Boot自动化配置的基本原理与实现.   Spring Boot之所以受开发者欢迎, 其中最重要的一个因素就是其自动化配置特性 ...

  3. Spring Boot常用注解总结

    Spring Boot常用注解总结 @RestController和@RequestMapping注解 @RestController注解,它继承自@Controller注解.4.0之前的版本,Spr ...

  4. Spring Boot 日志配置

    Spring Boot 日志配置 默认日志 Logback: 默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台.在运行应用程序和其他例子时,你应该已经看到很 ...

  5. 集成 Spring Boot 常用组件的后台快速开发框架 spring-boot-plus 国

    spring-boot-plus是一套集成spring boot常用开发组件的后台快速开发框架 Purpose 每个人都可以独立.快速.高效地开发项目! Everyone can develop pr ...

  6. Spring Boot 常用注解汇总

    一.启动注解 @SpringBootApplication @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documen ...

  7. Spring Boot自动配置原理(转)

    第3章 Spring Boot自动配置原理 3.1 SpringBoot的核心组件模块 首先,我们来简单统计一下SpringBoot核心工程的源码java文件数量: 我们cd到spring-boot- ...

  8. Spring boot --- 自动配置

    spring boot 自动配置 指的是针对很多spring 应用程序常见的应用功能,spring boot 能自动提供相关配置. spring boot 自动配置加载     Spring boot ...

  9. 使用@AutoConfigureBefore、After、Order调整Spring Boot自动配置顺序

    前言 Spring Boot是Spring家族具有划时代意义的一款产品,它发展自Spring Framework却又高于它,这种高于主要表现在其最重要的三大特性,而相较于这三大特性中更为重要的便是Sp ...

随机推荐

  1. php字符串啊的heredoc格式

    Heredoc技术,在正规的PHP文档中和技术书籍中一般没有详细讲述,只是提到了这是一种Perl风格的字符串输出技术.它也出现unix/linux的shell编程里面.但是现在的一些论坛程序,和部分文 ...

  2. 浏览器端JS导出EXCEL

    浏览器端JS导出EXCEL FileSaver.js 实现了在本身不支持 HTML5 W3C saveAs() FileSaver 接口的浏览器支持文件保存.FileSaver.js 在客户端保存文件 ...

  3. UVA-10779(最大流)

    题意: Bob与他的朋友交换贴纸;他的这些朋友只交换自己没有的贴纸;且用的是自己所有的重复贴纸;现在要求Bob最大能得到多少张贴纸; 思路: 把人和物品都进行编号,添加原点s和汇点e,s到每个物品连边 ...

  4. 理解 Android Fragment

    /***************************************************************************************** * 理解 Andr ...

  5. HihoCoder 1638 : 小Hi的天平 (2-sat+并查集)

    描述 小Hi给小Ho邮寄了一个天平.收到天平后,小Ho想知道天平在运输过程中是否损坏,为此它准备了A类物品和B类物品共n个(可能只有A类物品,也可能只有B类物品),但无法确定一个物品是哪一类.A类物品 ...

  6. js的浅克隆和深克隆

    谈一谈个人对js浅克隆和深克隆的区别. 之前也看到很多博客在写,当然也有写的非常好的,但是个人觉得既然要分享就不要写的太深奥,尽量以简单易懂为主. 浅克隆其实就是 对象A = 对象B:如果改变了对象B ...

  7. c和c++字符串分割

    1.c++版本,第一个参数为待分割的字符串 , 第二个参数为分割字符串 std::vector<std::string> split(const std::string& s, c ...

  8. bzoj 2655 calc —— 拉格朗日插值

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2655 先设 f[i][j] 表示长度为 i 的序列,范围是 1~j 的答案: 则 f[i][ ...

  9. 896C

    ODT/珂朵莉树 原来这个东西很咸鱼,只能数据随机情况下nloglogn,不过作为卡常还是很好的 大概就是维护区间,值相同的并且连续当成一个区间存在set里,每次区间操作强行分裂就行了. 复杂度因为是 ...

  10. js正则匹配字符串

    这里我第一时间想到的就是用 js 的search 和 match ,其中最常见的是match: 1. str.search(regexp):search()方法不支持全局搜索,因为会忽略正则表达式参数 ...