一、
Spring boot:
Spring boot出现之后,得益于“习惯优于配置”这个理念,再也没有繁琐的配置、难以集成的内容(大多数流行第三方技术都被集成在内)。 那么背后实现的核心原理到底是什么呢? 其实是spring 4.x提供的基于条件配置bean的能力。
1、没有配置、没有web.xml、没有构建说明,甚至没有应用服务器;只要你搞定后台代码就ok;
2、SpringBoot的四个核心:
自动配置:
起步依赖:告诉它需要什么功能,它就引入需要的库;比如web起步依赖、jpa起步依赖等;
命令行界面:可选功能;
Actuator
3、自动配置说明
3.1 自动配置可以被覆盖
3.2
SpringBoot的设计是先加载应用级配置,再考虑自动配置;
3.3 SpringBoot是基于条件化注解的
如:@ConditionalOnBean 条件表示判断是否配置了某个特定的bean,条件成立才会执行被
@ConditionalOnBean标注的类的方法,否则忽略;
3.4
prefix(前缀形式)
eg:@ConfigurationProperties(prefix="amazon")/
@ConfigurationProperties("amazon")这样的配置会自动去配置文件(applcation.properyies/
applcation.yarm
)匹配带有
amazon前缀的属性,如:amazon.associateId=20,表示给带有
amazon配置bean的associateId属性赋值
3.5 使用Profile配置(
Profile是一种条件话配置
)
作用:当程序需要部署到不同环境运行时(如正式环境和测试环境),有些Bean或者配置类可能在测试环境用不到配置的类,只在正式环境用,因为要用的环境需要运行时激活Profile;如果没有激活就会忽略该配置,而使用自动配置的安全配置;
eg:
@Profile("production")
@configuration
public class SecurityConfig{}
3.5.1 可以使用特定的Profile的属性文件
如果你正在使用
applcation.properyies,可以创建额外的属性文件,需要遵循
applcation-{Profile}.properyies这种命名格式,{Profile}为注解可以为@Profile("production")中的production
1/applcation.properyies
配置:Spring.profiles.active=production激活
production Profile
2/applcation.yml配置如下:
spring:
profiles:
active:production
3.5.2 使用多Profile Yaml文件进行配置
既然用了yaml就可以将所有profile放在一个application.yml文件中,例如:
logging:
level:
root:INFO
---
spring:
profiles:development
logging:
level:
root:DEBUG
---
spring:
profiles:production
logging:
path:/tmp
file:Book.log
level:
root:WARN
第二段和第三段分别为spring.profiles指定一个值,这个值表示该部分应该应用在哪个Profile里,第二段中属性应用于开发环境,因为spring.profiles设置为
development。
另一方面,第一段并未指定spring.profiles,因此这里的属性对全部Prifile或者对那些未设置该属性的激活Profile生效;