组件自动装配:规约大于配置,专一于核心业务外部化配置:一次构建、按需调配,处处运行java
嵌入式容器:内置容器、无需部署、独立运行web
Spring Boot Starter : 简化依赖、按需装配、自我包容spring
Production-Ready : 一站式运维、生态无缝整合sql
组件自动装配:模式注解、@Enable模块、条件装配、加载机制外部化配置:Environment抽象、生命周期、破坏性变动编程
嵌入式容器:Servlet Web容器、Reactive Web 容器跨域
Spring Boot Starter: 依赖管理、装配条件、装配顺序缓存
Production-Ready: 健康检查、数据指标、@Endpoint管控tomcat
//在SpringBootApplication中也是包含了EnableAutoConfiguration @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
查看源码,包含EnableAutoConfiguration,所以咱们直接启动DemoApplication是成功的。架构
@Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan( excludeFilters = {@Filter( type = FilterType.CUSTOM, classes = {TypeExcludeFilter.class} ), @Filter( type = FilterType.CUSTOM, classes = {AutoConfigurationExcludeFilter.class} )} ) public @interface SpringBootApplication{}
而对于配置文件,在Spring中是大部分存在的。app
【图片】
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
2018-10-10 11:23:56.607 INFO 21788 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Servlet com.myself.demo.web.servlet.MyServlet mapped to [/my/servlet]
@WebServlet(urlPatterns = "/my/servlet",asyncSupported = true
//映射、继承HttpServlet编程规范 ,asyncSupported支持异步处理 @WebServlet(urlPatterns = "/my/servlet",asyncSupported = true) public class MyServlet extends HttpServlet { protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //开始异步操做 AsyncContext asyncContext = req.startAsync(); //启动 asyncContext.start(()->{ try { resp.getWriter().println("Hello,World!"); //触发完成 asyncContext.complete(); } catch (IOException e) { e.printStackTrace(); } }); } }
注意:异步较为复杂,以上只是一个简单的实现例子
模版引擎
内容协商
异常处理
@ExceptionHandler
HandlerExceptionResolver --> ExceptionHandlerExceptionResolver
BasicErrorController(Spring Boot 项目默认错误页)
资源服务
资源跨域
服务发现
核心架构
//后续补充
处理流程
//后续补充
核心组件
Web MVC 注解兼容
函数式声明
异步非阻塞
使用场景
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <!-- Exclude the Tomcat dependency --> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <!-- Use Jetty instead --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jetty</artifactId> </dependency>
//这种状况下,须要先将其余外部服务剔除依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency>
Web ServerFactoryCustomizer
ReactiveWebServerFactoryCustomizer
依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency>
数据源
自动装配
依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>
实体映射
实体操做
自动装配
依赖
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> </dependency>
Spring事务抽象
JDBC事务抽象
自动装配
//两者等价 new SpringApplicationBuilder(DemoApplication.class).run(args); //SpringApplication.run(DemoApplication.class, args);
依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
端点(Endpoints)
健康检查(Health Checks)
指标(Metrics)
若是本文对你有所帮助,欢迎关注我的技术公众号