一、springBoot概念
1.什么是spring boot
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。
该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
用我的话来理解,就是spring boot其实不是什么新的框架,它默认配置了很多框架的使用方式同时又可以让用户自己去灵活的配置。
2.SpringBoot starter机制
2.1 为什么要自定义starter?
在我们的日常开发工作中,经常会有一些独立于业务之外的配置模块,我们经常将其放到一个特定的包下,然后如果另一个工程需要复用这块功能的时候,需要将代码硬拷贝到另一个工程,重新集成一遍,麻烦至极。
如果我们将这些可独立于业务代码之外的功配置模块封装成一个个starter,复用的时候只需要将其在pom中引用依赖即可,SpringBoot为我们完成自动装配,即将这些共有配置统一抽离独立出来。
2.1 starter实现机制
它提供了一堆Starter POM依赖包,并按照使用习惯解决了一些依赖问题及配置问题(使用了自己的默认配置,而减少开发人员自己配置的时间)。与第三方框架进行高度整合,开发人员可以快速的进行业务开发。
starter就是定义一个starter的jar包,写一个@Configuration配置类、将这些bean定义在里面,然后在starter包的META-INF/spring.factories中写入该配置类,springboot会按照约定来加载该配置类
2.3 自动装配的原理
简述:
SpringBoot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值,将这些值作为自动配置类导入容器 ,自动配置类就生效 , 帮我们进行自动配置工作;
@springbootApplication架构
- 自动配置类由各个starter提供,使用@Configuration +
@Bean定义的配置类,放到METAINF/spring.factories下 - 使用Spring spi机制扫描META-INF/spring.factories下的配置类
- 使用@Import导入自动配置类
执行时序图如下:
3 Spring Boot内嵌应用服务器
Spring Boot默认使用内嵌的tomcat作为应用服务器,无需引用外部的tomcat等应用服务器。这样部署简单,启动更快,设置端口等更灵活。
节省了下载安装tomcat,应用也不需要再打war包,然后放到webapp目录下再运行
只需要一个安装了 Java 的虚拟机,就可以直接在上面部署应用程序了
springboot已经内置了tomcat.jar,运行main方法时会去启动tomcat,并利用tomcat的spi机制加载springmvc
应用
整合servlet
代码通过实例化ServletRegistrationBean、 FilterRegistrationBean 和ServletListenerRegistrationBean 分别来注册servlet、过滤器和监听器。
1.servlet注册
@Bean
public ServletRegistrationBean registerRopServletBean() {
return new ServletRegistrationBean(new RopServlet(), "/router");
}
2.过滤器注册
@Bean
public FilterRegistrationBean sessionFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean(new SessionFilter());
//拦截规则
registration.addUrlPatterns("/*");
//过滤器名称
registration.setName("sessionFilter");
//是否自动注册 false 取消Filter的自动注册
/* registration.setEnabled(true);
//过滤器顺序
registration.setOrder(1);*/
return registration;
}
已经代替了之前的在web.xml标签里的注册方法
参考资料
1.构建微服务:Spring boot 入门篇https://www.cnblogs.com/ityouknow/p/5662753.html