概述

    本文主要写了下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. HihoCoder 1504 : 骑士游历 (矩阵乘法)

    描述 在8x8的国际象棋棋盘上给定一只骑士(俗称“马”)棋子的位置(R, C),小Hi想知道从(R, C)开始移动N步一共有多少种不同的走法. 输入 第一行包含三个整数,N,R和C. 对于40%的数据 ...

  2. Spring 事务管理高级应用难点剖析: 第 1 部分

    Spring 的事务管理是被使用得最多的功能之一,虽然 Spring 事务管理已经帮助程序员将要做的事情减到了最小.但在实际开发中,如果使用不当,依然会造成数据连接泄漏等问题.本系列以实际应用中所碰到 ...

  3. 1.131.15 Sqoop导出数据Export使用

    一.export 1.export概述 export工具将一组文件从HDFS导入到RDBMS.目标表必须已经存在于数据库中.根据用户指定的分隔符读取输入文件并将其解析为一组记录, 只有map: [ro ...

  4. POJ 3658 Artificial Lake (单调栈)

    题意: 析:利用单调栈,维护一个单调递增的栈,首先在最低的平台开始,每次向两边进行扩展,寻找两边最低的,然后不断更新宽度. 代码如下: #pragma comment(linker, "/S ...

  5. Go语言之父谈Go:大道至简

    http://www.csdn.net/article/2012-07-05/2807113-less-is-exponentially-more 摘要:导读:这篇文章是Google首席工程师.Go语 ...

  6. C语言提高代码效率的几种方法

    一段完美的代码不仅在于找到一个给定的问题的解决方案,但在它的简单性,有效性,紧凑性和效率(内存).设计的代码比实际执行更难.因此,每一个程序员当用C语言开发时,都应该保持这些基本的东西在头脑中.本文向 ...

  7. bzoj2502清理雪道

    传送门 好题啊,由于每个点既可以进,也可以出,就可以新建一个源点和汇点,对于每个点都连边,然后就是最小流板子了. 代码: #include<cstdio> #include<iost ...

  8. [Noip2012普及组]摆花

    Description 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共 m 盆.通过调查顾客的喜好,小明列出了顾客最喜欢的 n 种花,从 1 到 n 标号.为了在门口展出更多种花,规定 ...

  9. MySQL - 执行sql报错USING BTREE

    问题与分析 在执行sql文件时发现报错如下: You have an error in your SQL syntax; check the manual that corresponds to yo ...

  10. nutzboot dubbo zookeeper简单使用

    提供方和消费方properties 配置基本差不多 nutz.application.name这个值不一样 提供方配置自动端口就行server.port=0 消费方一般需要对外提供web服务配置ip和 ...