1、 理解"外部化配置"
相同的应用代码可以根据所处的环境,差别化地使用外部的配置来源,可能通过Properties文件、YAML文件、环境变量或命令行参数实现。由于Spring Boot 内定PropertySource的读取顺序,命令行优先于application.propeties和YAML配置文件。
案例:读取配置文件中的属性值
修改HelloController,代码如下:
代码语言:javascript复制@RestController
public class HelloController {
@Value("${company}")
private String company;
@GetMapping("/hello")
public String hello(){
System.out.println(this.getClass());
return company;
}
}
代码语言:javascript复制#在application.properties中添加
company=tyshcool
2、 理解"规约大于配置"
Spring Framework2.5时代开始,Spring Bean注册方式由Annotation驱动逐步替代XML文件驱动,通过@Componet及"派生"注解(如@Service)与XML元素content:componet-scanbase-package="..."/相互配合,将Spring @Component Bean扫描并注册至Spring Bean容器中。
到了Spring Framework3.0时代,新引入的Annotation @Configuration是XML配置文件的替代物。
Spring Framework4.0增加了条件化的Spring Bean装配注解@Conditional,其Value()属性可指定Condition的实现类,而Condition提供装配条件的实现逻辑。Spring Boot 在此基础之上,显著特性之一:条件化自动装配。
3、 Spring Boot作为微服务中间件
不少开发人员认为Java微服务开发的首先是Spring Boot,甚至是唯一选择。实际上微服务架构作为细粒度的SOA,并未限制实现的技术。因此,传统Java EE容器也能实现微服务。除上述框架外一个名为KummuluzEE的轻量级容器获得了Oracle大奖,可是在Java世界中Spring Boot在Java 微服务的世界里独占鳌头。
4、 Spring Boot作为Spring Cloud基础设施
尽管Spring Boot提供了丰富的功能特性。但Spring Boot 天然性地缺少快速构建分布式系统的能力.Spring官方在Spring Boot的基础之上研发出Spring Cloud,至力于为开发人员提供一些快速构建通用的分布式系统。
Spring Cloud提供的功能大多数被大型互联网公司实现。但是Spring 官方的最大优势在于其强大的API设计能力。Spring Cloud高度抽象的接口对于应用开发人员而言,不需要关心底层实现。当需要更替实现时,按需配置即可。