自定义配置
主要有两种影响自动配置的方式:
1.使用显式配置进行覆盖
2.使用属性进行精细化配置
1、覆盖 Spring Boot 自动配置
当需要使用安全特性的时候,自动配置做的不是很好,需要自己来覆盖一些配置满足特定的安全要求。首先需要导入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
这样就是一个安全的web程序了,重新启动就会发现需要验证身份。这时候用户名就是user,密码可以在控制台看到输出:
Using generated security password: a473b3f5-49bf-4b88-ad07-5ec6817c1021
覆盖自动配置很简单,就当自动配置不存在,直接显式地写一段配置。在编写显式配置时,我们会专注于Java形式的配置。在Spring Security的场景下,这意味着写一个扩展了WebSecurityConfigurerAdapter的配置类。
2、通过属性文件外置配置
如果只是为了细微调整一些细节,比如端口号和日志级别等等,就没有必要放弃自动配置。事实上,SpringBoot自动配置的Bean提供了300多个用于微调的属性。当你调整设置时,只要在环境变量、Java系统属性、JNDI(Java Naming and Directory Interface)、命令行参数或者属i性文件里进行指定就好了。