1. Spring boot
Spring Boot实际上就是为了简化配置所诞生的产物。省去了大量负载的配置,只需要配置一个application.yml就可以。还有一点就是“约定优于配置”的理念。Spring在这一点做的比较好,常见的比如数据库表明即实体名,列名即实体属性名。
(1) Spring boot核心
Spring boot的核心,就是三个注解
SpringBootConfiguration:包含了Configuration注解,实现配置文件;
EnableAutoConfiguration:加载spring.factories;
ComponentScan:指定扫描范围;
(2)Spring boot启动的流程
① Spring boot启动的时候会去扫描starter包中的 resources/META-INF/spring.factories文件,根据文件中配置的jar包扫描依赖的jar包;
② 根据 spring.factories 配置加载 AutoConfigure 类;
③ 根据 @Conditional 注解的条件,进行自动配置并将 Bean 注入 Spring Context
2. Spring Cloud Alibaba
Spring Cloud并非是一种框架,严格意义上来讲其更像是一种规范。常说的Spring Cloud更多的是指Spring Cloud Netflix,这是由于Spring Cloud官方给的注册中心eureka、负载均衡ribbon、熔断hystrix都是netflix开源的。Spring Cloud Netflix是Spring Cloud规范的一种实现。所以可以理解Spring Cloud Alibaba也是Spring Cloud规范的一种实现,其所使用的注册中心、负载均衡、熔断、远程调用等均采用不同的组件。
Spring Cloud Netflix | Spring Cloud Alibaba | |
注册中心 | Eureka | Nacos |
负载均衡 | Ribbon | Dubbo LB |
容错 | Hystrix | Sentinel |
服务调用 | Feign | Dubbo RPC |
分布式消息 | RocketMQ | |
配置中心 | Config | Nacos |
3. ORM框架
总的来说,ORM框架常用的可以分为两种,面向关系(MyBatis)和面向对象(Hibernate)。Spring Data JPA属于Hibernate的阵营。两者的区别还是非常大的,Hibernate更加注重于开发人员注意力全部集中在逻辑代码层面,但是Mybatis甚至可以将业务逻辑融合到表设计中。数据库中表和实体类之间的耦合性关系比较大,也是约定大于配置的一种典型表现了。使用Hibernate对开发者的SQL要求不高,只需要可以操作POJO即可。但是MyBatis基本上是可以说是需要精通SQL了。这也导致了,获取同样的需要使用Hibernate更加的快捷,但是使用Mybatis或许后期更改起来更加的灵活。
Hibernate | Mybatis | |
数据库移植性 | 高 | 低 |
SQL | 关注度低 | 关注度高 |
日志系统 | 功能齐全 | 基本 |
开发成本 | 略低 | 更高 |
SQL优化 | 不支持 | 优秀 |