本文主要写了下Spring Boot的一些经常使用配置。java
入口类:web
Spring Boot一般有一个名为*Application的入口类,入口类里面有一个main方法,这个main方法其实就是一个标准的Java应用的入口方法。在main方法中使用SpringApplication.run(*Application.class, args),启动Spring Boot应用项目。spring
@SpringBootApplication:安全
@SpringBootApplication是Spring Boot的核心注解,它是一个组合注解,源码以下:app
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注解主要组合了@Configuration、@EnableAutoConfiguration、@ComponentScan;若不使用@SpringBootApplication注解,则能够在入口类上直接使用@Configuration、@EnableAutoConfiguration、@ComponentScan。框架
其中,@EnableAutoConfiguration让Spring Boot根据类路径中的jar包依赖为当前项目进行自动配置。例如,添加了spring-boot-starter-web依赖,会自动添加Tomcat和Spring MVC的依赖,那么Spring Boot会对Tomcat和Spring MVC进行自动配置。ide
Spring Boot会自动扫描@SpringBootApplication所在类的同级包以及下级包里的Bean。建议入口类放置的位置在groupId+arctifactID组合的包名下。spring-boot
关闭特定的自动配置:ui
经过上面的@SpringBootApplication的源码能够看出,关闭特定的自动配置应该使用@SpringBootApplication注解的exclude参数,例如:@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})。this
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);
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除了上面的配置外,还容许使用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是Spring用来针对不一样的环境对不一样的配置提供支持的,全局Profile配置使用application-{profile}.properties。
经过在application.properties中设置spring.profiles.active=prod来指定活动的Profile。
例如: