一、简介
spring boot 使用注解简化xml 相关配置,其重要注解有: @ComponentScan、@Configuration、@EnableAutoConfiguration。
需要深入理解自动化配置的原理可参考《JavaEE开发的颠覆者 Spring Boot实战》
自动化配置依赖的注解:
@Import 注册一个有@Configuration、@Component 修饰的组件到ApplicationContext
@ConfigurationProperties 把配置文件中的值(application.yml / application.properties 中配置的值)注入对象的属性,其注解的类需要有setter 方法。类通常为xxxProperties.java
@EnableConfigurationProperties 引入配置对象,其修饰类的对象方法将可以使用该配置对象(xxxProperties)作为参数,使用@Bean 方法返回需要注册的对象到ApplicationContext
二、Web 容器配置
1.tomcat 配置
spring boot 内置了服务器,可以对服务器相关数据进行配置,其配置类为 org.springframework.boot.autoconfigure.web.ServerProperties。
2.https 配置
https 有较好的安全性,对于个人而言,一个https 证书价格有点贵,jdk 提供了一个java 数字证书管理工具 keytool。
1).keytool -genkey -alias https_ch2 -keyalg RSA -keysize 2048 -keystore https_ch2.p12 -validity 365
命令行使用以上命令生成数字证书
-genkey : 表示创建一个密钥
-alias : 证书别名
-keyalg : 加密算法,常见加密算法有RSA 等
-keysize : 密钥长度
-keystore : 密钥存放名字
-validity : 密钥有效期,单位天
根据提示输入相关信息,完成后把当前目录下生成的文件复制到项目根目录,并在application.yml / application.properties 配置如下:
server:
ssl:
key-alias: https_ch2
key-store: https_ch2.p12
key-password: 123456
浏览器访问如下:
由于证书时自己生成的,不被浏览器信任,此时添加信任或继续访问即可。
3.jetty 配置
Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。
pom.xml 中排除tomcat 并加如jetty 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
三、properties 配置
spring boot 采用了自动化配置,但实际项目中某些功能需要根据需求用户自定义,自定义的配置文件就是resources 目录下的application.yml / application.properties
配置文件优先级:
1.项目根目录下的config 目录
2.项目根目录
3.classpath 下的config 目录
4.classpath 下
四、yml 配置
spring boot 配置文件 .properties / .yml 文件都会被加载到spring Environment 中。spring 提供了 @Value / @ConfigurationProperties 将配置文件中的数据注入到bean 中。
yaml 时json 的超集,是专门用来写配置文件的,yaml 文件使用缩进表示层级关系。
五、Profile
项目开发中经常需要在开发环境和生成环境切换,spring boot 约定不同环境的配置文件名称规则为 application-{profile}.properties / application-{profile}.yml,profile占位符表示当前的环境名称。
在application.properties / application.yml 中配置 spring.profiles.active={profile} 即表示使用application-{profile}.properties / application-{profile}.yml 配置文件