1.Spring Boot 基础

SpringBoot 设计理念

约定优于配置

约定优于配置(Convention Over Configuration),也称作按约定编程,是⼀一种软件设计范式,旨在减少软件开发⼈人员需做决定的数量量、获得简单的好处,⽽而⼜又不不失灵活性。

Starters

Spring Boot Starters 基于约定优于配置的理理念来设计,Spring Boot Starter 中有两个核心组件:⾃自动配置代码和提供⾃自动配置模块及其它有⽤用的依赖。也就意味着当我们项⽬目中引⼊入某个 Starter,即拥有了了此软件的默认使⽤用能⼒力力,除⾮非我们需要特定的配置,⼀一般情况下我仅需要少量量的配置或者不不配置即可使⽤用组件对应的功能。

Spring、Spring Boot 和 Spring Cloud 的关系

Spring 最初核⼼心的两⼤大核⼼心功能 Spring IoC 和 Spring Aop 成就了了 Spring,Spring 在这两大核心功能上不不断的发展,才有了了 Spring 事务、Spring MVC 等⼀一系列列伟⼤大的产品,最终成就了了 Spring 帝国,到了了后期Spring ⼏几乎可以解决企业开发中的所有问题。

Spring Boot 是在强大的 Spring 生态基础上面发展而来,发明 Spring Boot 不是为了了取代 Spring,是为了让⼈人们更更容易易的使用 Spring。所以说没有 Spring 强大的功能和⽣生态,就不会有后期的 Spring Boot 火热,Spring Boot 使⽤用约定优于配置的理理念,重新重构了了 Spring 的使⽤用,让 Spring 后续的发展更更有⽣生命力。

Spring Cloud 是⼀系列列框架的有序集合,它利用 Spring Boot 的开发便便利利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路路器器、数据监控等,都可以用 Spring Boot的开发风格做到一键启动和部署。

Spring Cloud 是为了了解决微服务架构中服务治理而提供的一系列列功能的开发框架,并且 Spring Cloud 是完全基于 Spring Boot 而开发,Spring Cloud 利利用 Spring Boot 特性整合了开源行业中优秀的组件,整体对外提供了一套在微服务架构中服务治理理的解决⽅方案。
综上我们可以这样来理理解,正是由于 Spring IoC 和 Spring Aop 两个强大的功能才有了了 Spring,Spring 生态不断的发展才有了 Spring Boot,使⽤用 Spring Boot 让 Spring 更更易易⽤用更更有⽣生命⼒力力,Spring Cloud 是基于Spring Boot 开发的一套微服务架构下的服务治理方案。

Spring Boot 2.0 

Spring Boot 2.0 ⽀支持了了动态 Gif 的启动 Logo 打印。
在 Spring Boot 1.0 项⽬目中 src/main/resources 路径下新建一个 banner.txt 文件,文件中写⼊入一些字符,启动项⽬目时就会发现默认的 Banner 被替换了了,到了了 Spring Boot 2.0 现在可以⽀支持 Gif 文件的打印,Spring Boot2.0 在项⽬目启动的时候,会将 Gif 图⽚片的每一个画⾯面,按照顺序打印在⽇日志中,所有的画面打印完毕后,才会启动 Spring Boot 项⽬目。

1.0 升级 2.0 API 变化

启动类 SpringBootServletInitializer

Spring Boot 部署到 Tomcat 中去启动时需要在启动类添加 SpringBootServletInitializer,2.0 和 1.0 有区别。

// 1.0
import org.springframework.boot.web.support.SpringBootServletInitializer;
// 2.0
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class UserManageApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder applicat
ion) {
return application.sources(UserManageApplication.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(UserManageApplication.class, args);
}
}

Spring Boot 2.0 默认不不包含 log4j,建议使⽤用 slf4j

import org.apache.log4j.Logger;
protected Logger logger = Logger.getLogger(this.getClass());
改为:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
protected Logger logger = LoggerFactory.getLogger(this.getClass());

配置文件

大量的 Servlet 专属的 server.* 被移到了了 server.servlet.* 下:

Old property                   New property
server.context-parameters.*    server.servlet.context-parameters.*
server.context-path            server.servlet.context-path
server.jsp.class-name          server.servlet.jsp.class-name
server.jsp.init-parameters.*   server.servlet.jsp.init-parameters.*
server.jsp.registered          server.servlet.jsp.registered
server.servlet-path            server.servlet.pat

原 spring.http.* 或 spring.server.* 下的⼀一些参数,例例如我⽤用到了了⽂文件上传参数,已修改为sping.servlet.multipart 下。

WebMvcConfigurerAdapter 过期

Spring Boot 2.0 中将原来的 WebMvcConfigurerAdapter 替换为 WebMvcConfigurer

1.0 中的⽤用法:
public class MyWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter
2.0 中的⽤用法:
public class MyWebMvcConfigurerAdapter implements WebMvcConfigurer

Spring Boot JPA 变化

去掉了了 xxxOne() ⽅方法
以前的 findOne() ⽅方法其实就是根据传⼊入的 ID 来查找对象,所以在 Spring Boot 2.0 的 Repository 中我们可以添加 findById(long id) 来替换使⽤用。

基础环境升级

Spring Boot 2.0 要求 Java 8 作为最低版本,许多现有的 API 已更新,以利用 Java 8 的特性,例如,接口上的默认⽅方法,函数回调以及新的 API,如 javax.time。如果你当前正在使⽤用 Java 7 或更更早版本,则在开发Spring Boot 2.0 应⽤用程序之前,需要升级你的 JDK。

Spring Boot 2.0 基于 Spring Framework 5 构建,本次 Spring Boot 的升级,同时也升级了了部分其依赖的第三方组件,主要有以下几个

Jetty 9.4,Jetty 是⼀一个开源的 Servlet 容器器,它为基于 Java 的 Web 内容,例例如 JSP 和 Servlet 提供运
行行环境。Jetty 是使⽤用 Java 语⾔言编写的,它的 API 以⼀一组 JAR 包的形式发布。
Tomcat 8.5,Apache Tomcat 8.5.x 旨在取代 8.0.x,完全⽀支持 Java 9。
Flyway 5,Flyway 是独⽴立于数据库的应⽤用、管理理并跟踪数据库变更更的数据库版本管理理⼯工具。⽤用通俗的话
讲,Flyway 可以像 SVN 管理理不不同⼈人的代码那样,管理理不不同⼈人的 SQL 脚本,从⽽而做到数据库同步。
Hibernate 5.2,Hibernate 是⼀一款⾮非常流⾏行行的 ORM 框架。
Gradle 3.4,Spring Boot 的 Gradle 插件在很⼤大程度上已被重写,有了了重⼤大的改进。
Thymeleaf 3.0,Thymeleaf 3 相对于 Thymeleaf 2 有⾮非常⼤大的性能提升。

默认软件替换和优化

默认连接池已从 Tomcat 切换到 HikariCP,HikariCP 是⼀一个⾼高性能的 JDBC 连接池,Hikari 是⽇日语“光”的意思.

关于性能为什什么如此突出,官⽹网给出的说明如下:

字节码精简:优化代码,直到编译后的字节码最少,这样,CPU 缓存可以加载更更多的程序代码;

优化代理理和拦截器器:减少代码,例例如 HikariCP 的 Statement proxy 只有 100 ⾏行行代码;
自定义数组类型(FastStatementList)代替 ArrayList:避免每次 get() 调⽤用都要进⾏行行 range check,避免调⽤用 remove() 时从头到尾的扫描;
自定义集合类型(ConcurrentBag):提⾼高并发读写的效率;
其他针对 BoneCP 缺陷的优化,比如对于耗时超过⼀一个 CPU 时间片的方法调用的研究。

Security

Spring Security 是 Spring 社区的⼀一个顶级项⽬目,也是 Spring Boot 官⽅方推荐使⽤用的 Security 框架。除了了常规
的 Authentication 和 Authorization 之外,Spring Security 还提供了了诸如 ACLs、LDAP、JAAS、CAS 等⾼高级
特性以满⾜足复杂场景下的安全需求。
没有使⽤用 Spring Boot 之前集成起来相对⽐比较麻烦,⽽而 Spring Boot 中基于 Java 配置实现 Spring Security 功
能。Spring Boot 2 极⼤大地简化了了默认的安全配置,并使添加定制安全变得简单。
Spring Boot 2.0 ⾮非常容易易使⽤用 Spring Security 5.0 保护响应式应用,当检测到 Spring Security 存在的时候会
自动进行默认配置

Micrometer

 

 

 

 

你可能感兴趣的:(1.Spring Boot 基础)