概述

    本文主要写了下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. codeforces 702D D. Road to Post Office(数学)

    题目链接: D. Road to Post Office time limit per test 1 second memory limit per test 256 megabytes input ...

  2. NLP任务中的基本指标(precision and recall )

    >>以下内容参考wikipedia. https://en.wikipedia.org/wiki/Precision_and_recall 精确度 precision  = (true p ...

  3. Opencv— — water wave

    // define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include < ...

  4. 【linux】lsof命令和{Linux下文件删除、句柄与空间释放问题}

      导读: 一.用事实说话 二.关于LSOF命令的其它用法: 三.参考文档:   正文: lsof:Finding open files with lsof 作用:查看文件被哪些进程打开 一.用事实说 ...

  5. AQS共享锁应用之Semaphore原理

    我们调用Semaphore方法时,其实是在间接调用其内部类或AQS方法执行的.Semaphore类结构与ReetrantLock类相似,内部类Sync继承自AQS,然后其子类FairSync和NoFa ...

  6. python --Eclipse中安装pydev插件及调试

    运行程序 运行 Python 源程序,有两种方法,以 example.py 为例: example.py代码: #!/usr/bin/env python # -*- coding:utf-8 -*- ...

  7. Manasa and Combinatorics

    题意: 给定n,求问由2n个字母B,n个字母A构成的字符串中 任意前缀B的个数大于A的个数且任意后缀B的个数大于A的个数的 字符串个数. 解法: 注意到答案不易于直接计算,所以我们考虑应用容斥原理. ...

  8. Flutter实战视频-移动电商-62.购物车_首页Provide化 让跳转随心所欲

    62.购物车_首页Provide化 让跳转随心所欲 新建provide/currentIndex.dart 内容比较简单,定义一个变量当前页面的索引currentIndex,再定义一个方法改变它的值 ...

  9. 关于weblogic 10.3.6.0 的漏洞复现(2)

    今天小R又学会了一个工具的使用,而且这个工具很强大很强大. 待会介绍. 一.需要的试验环境: 一台宿主机,虚拟机(kali+window2008或其他版本的windows)  1.宿主机需要的工具:B ...

  10. CodeForces 359D Pair of Numbers (暴力)

    题意:给定一个正整数数组,求最长的区间,使得该区间内存在一个元素,它能整除该区间的每个元素. 析:暴力每一个可能的区间,从数组的第一个元素开始考虑,向两边延伸,设延伸到的最左边的点为l, 最右边的点为 ...