Spring Boot-2.配置基础

1. 基本配置

1.1 入口类

Spring Boot通常以一个名为*Application的类作为入口类,入口类里的main方法(即标准的Java应用的入口方法)作为Spring Boot应用项目的入口方法。
@SpringBootApplication是Spring Boot的核心注解,这是一个组合注解,源码为:

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan
public @interface SpringBootApplication {
    Class[] exclude() default {};
    String[] excludeName() default {};
    String[] scanBasePackages() default {};
    Class[] scanBasePackageClasses() default {};
}

因此,不使用@SpringBootApplication注解,可以在入口类上直接使用@Configuration、@EnableAutoConfiguration、@ComponentScan。
其中@EnableAutoConfiguration让Spring Boot根据类路径中的jar包依赖为当前项目进行自动配置。

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

1.2 自动配置的关闭

关闭特定的自动配置应该使用@SpringBootApplication注解的exclude参数。
例如:

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

1.3 Banner

在Spring Boot启动的时候有一个默认的启动图像:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.5.9.RELEASE)

1.3.1 修改Banner

  1. 在工具网站生成字符。
  2. 在/src/main/resources下新建banner.txt,将生成的字符复制到这个文件中。
  3. 再次启动程序,可以看到引导图案变成指定的样式。

1.3.2关闭Banner

  1. 在main函数中设置:
SpringApplication app = new SpringApplication(DemoApplication.class);
app.setBannerMode(Banner.Mode.OFF);
app.run(args);

1.4 Spring Boot的配置文件

Spring Boot的全局配置文件application.properties或者application.yml,位于/src/main/resources目录或类路径的/config下。

1.5 starter pom

通过使用应用场景所需要的start pom 。相关的技术配置将会消除,可以得到Spring Boot提供的自动配置的Bean。

1.5.1 官方提供的starter pom

名称 描述
spring-boot-starter springboot核心starter ,包括自动配置,日志,yaml配置文件的支持
spring-boot-starter-actuator 准生产特性,用来监控和管理应用
spring-boot-starter-remote-shell 提供基于ssh协议的监控和管理
spring-boot-starter-amqp 使用spring-rabbit支持AMQP
spring-boot-starter-aop 使用AOP和AspectJ支持面向切面编程
spring-boot-starter-batch 对springBatch支持
spring-boot-starter-cache 对SpringCache抽象的支持
spring-boot-starter-cloud-connectors 对云平台(Cloud Foundry ,Heroku)提供的服务简化的连接方式
spring-boot-starter-data-elasticsearch 对spring-data-elasticsearch的支持
spring-boot-starter-data-gemfire 对分布式存储GemFire的支持
spring-boot-starter-data-jpa 对jpa的支持,包括spring-data-jap,spring-orm,Hibernate
spring-boot-starter-data-mongodb 通过spring-data-mongodb对mongodb的支持
spring-boot-starter-data-rest 通过spring-data-rest-webmvc对spring Data reposity暴露为REST形式的服务
spring-boot-starter-data-solr 通过spring-data-solr对Apache Solr的支持
spring-boot-starter-data-freemaker 对Freemaker的支持
spring-boot-starter-data-groovy-templates 对Groovy模版引擎的支持
spring-boot-starter-hateoas 通过spring-hateoas对基于HATEOAS的REST形式的网络服务的支持
spring-boot-starter-hornetq 通过HornetQ对JMS的支持
spring-boot-starter-integration 对系统集成框架spring-integration的支持
spring-boot-starter-jdbc 对JDBC数据库的支持
spring-boot-starter-jersey 对Jersey REST形式的网络服务的支持
spring-boot-starter-jta-atomikos 通过Atomikos对分布式事物的支持
spring-boot-starter-jta-bitronix 通过Bitronix对分布式事物的支持
spring-boot-starter-mail 对spring mail的支持
spring-boot-starter-mobile 对spring mobile的支持
spring-boot-starter-mustache 对Mustache模版引擎的支持
spring-boot-starter-redis 对键值对内存数据库Redis的支持,包含spring-redis
spring-boot-starter-security 对spring-security的支持
spring-boot-starter-social-facebook 通过spring-social-facebook 对facebook的支持
spring-boot-starter-social-twitter 通过spring-social-twitter 对twitter的支持
spring-boot-starter-social-linkedin 通过spring-social-linkedin 对linkedin的支持
spring-boot-starter-thymeleaf 对Thymeleaf模版引擎的支持,包含于spring的整合配置
spring-boot-starter-velocity 对velocity模版引擎的支持
spring-boot-starter-web 对web项目开发的支持,包含tomcat和spring-webmvc
spring-boot-starter-Tomcat springboot默认容器tomcat
spring-boot-starter-Jetty jetty容器
spring-boot-starter-undertow Undertow容器
spring-boot-starter-logging 默认日志输出框架Logback
spring-boot-starter-log4j 支持log4j
spring-boot-starter-websocket websocket的支持
spring-boot-starter-ws spring webservice的支持

1.5.2 第三方starter pom

存在第三方为Spring Boot编写的starter pom。

1.6 使用xml配置

Spring Boot提倡零配置,即无xml配置,但是需要使用xml配置的话,可以通过Spring提供的@ImportResource来加载xml,例如:

@OmportResource({"classpath:some-context.xml","classpath:another-context.xml"})

2.外部配置

Spring Boot 允许使用properties文件,yaml文件或者命令行参数作为外部配置。

2.1命令行参数配置

Spring Boot可以基于jar包运行的,打包成jar包的程序可以通过以下命令运行:

java -jar xx.jar

因此可以通过设置java命令的参数为项目设定参数,例如修改Tomcat端口号:

java -jar xx.jar --server.port=9090

2.2 常规属性配置

在Spring Boot中,在application.properties文件中定义属性,直接使用@Value即可注入。

例如:
(1)在application.properties中添加属性:

boot.author=asd
book.name=spring boot

(2)在类中可以用以下方式获取属性值:

@Value("${book.author}")
private String bookAuthor;
@Value("${book.name})
private String bookName;

2.3 类型安全的配置

Spring Boot可以通过@ConfigurationProperties将properties属性和一个Bean及其属性关联,从而实现类型安全的配置。
例如:
(1)在application.propertie中添加

author.name=asd
author.age=25

(2)在Bean进行关联

@Component
@ConfigurationProperties(perfix = "author")
public class AuthorSettings {
    private String name;
    private Long age;
    public String getName() {
        return name;
    }
    public Long getAge() {
        return age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(Long age) {
        this.age = age;
    }
}

(3)在类中引用

@RestController
@SpringBootApplication
public class DemoApplication {

    @Autowired // 使用@Autowired直接注入
    private AuthorSettings authorSettings;

    @RequestMapping("/")
    public String index(){
        return "Author name is " + authorSettings.getName() + ", and the age is "  + authorSettings.getAge() + ".";
    }
    public static void main(String[] args){
        SpringApplication.run(DemoApplication.class,args);
    }
}

3. 日志配置

  • Spring Boot支持Java Util Logging、Log4J,Log4J2和Logback作为日志框架。
  • 选择框架后,Spring Boot会为当前日志框架的控制输出以及文件输出做好设置。
  • 默认情况下,Spring Boot使用Logback作为日志框架。
  • 配置日志文件:
logging.file=D:/logs/log.log
  • 配置日志文件
logging.level.org.springframework.web = DEBUG

4. Profile配置

*Profile是Spring根据不同的环境的不同配置来提供支持的。

  • 全局Profile使用application-{profile}.properties。
  • 通过在application.properties中设置spring.profiles.active = prod来制定活动的Profile

你可能感兴趣的:(Spring Boot-2.配置基础)