Spring Boot之前世今生
Spring Framework AOP、IOC/DI
Spring万能胶
- 如何对配置进行轻量化
思考:用springmvc去创建一个web项目发布一个helloworld的http端口
- 创建一个项目结构(maven/gradle)
- spring的依赖,springmvc、servlet api的依赖
- web.xml, DispatcherServlet
- 启动一个springmvc的配置,Dispatcher-servlet.xml
- 创建一个Controller发布一个请求
- 发布到jsp/servlet容器
什么是SpringBoot
约定优于配置理念下的一个产物
- 只要依赖的spring-boot-starter-web的jar,就会自动内置一个tomcat容器(替换)
- 项目结构
- 默认提供了配置文件application.properties
- starter启动依赖如果是一个webstarter,默认认为你是去创建一个spring mvc的应用
Spring Boot和微服务
为什么SpringCloud会采用SpringBoot来作为基础框架呢?原因很简单
- SpringCloud它是关注服务治理领域的解决方案,而服务治理是依托于服务架构之上,所以它仍然需要一个承载框架
- SpringBoot可以简单认为它是一套快速配置Spring应用的脚手架,它可以快速开发一个单个微服务,所以SpringCloud的版本和Springboot的版本的兼容性有很大的关联
Spring Boot的特性
- EnableAutoConfiguration自动装配
- Starter启动依赖,依赖于自动装配的技术
- Actuator监控,提供了一些endpoint、http、jmx形式去进行访问health信息、metrics信息等
- SpringBootCLI客户端
Spring注解驱动的发展过程
Spring Framework的注解驱动的发展历史
Spring 1.x
在SpringFramework1.x的时代,其中1.2.0是这个时代的分水岭,当时java5刚刚发布,业界正兴起了使用Annotation的技术风,Spring Framework自然也提供了支持,比如当时已经支持了@Transcational等注解,但是这个时候,xml配置方式还是唯一选择
<bean name="" class=""/>
Spring 2.x阶段
Spring Framework2.x时代,2.0版本在Annotation中添加了@Required、@Repository以及AOP相关的@Aspect等注解,同时也提升了XML配置能力,也就是可扩展的XML,比如Dubbo这样的开源框架就是基于Spring XML的扩展来完美的继承Spring,从而降低了Dubbo使用门槛。
在2.x的时代,2.5版本也是这个时代的分水岭,它引入了 一些很核心的Annotaion
- @Autowired依赖注入
- @Qualifer依赖查找
- @Compoent、@Service组件声明
- @Controller、@RequestMappring等SpringMvc的注解
尽管Spring2.x时代提供了不少的注解,但是仍然没有脱离xml配置驱动,比如context:annotation-config context:compoent-scan,前者的责任是注册Annotation处理器,后者是负责扫描classpath下指定包路径下被Spring模式注解标注的类,将他们注册成为Spring Bean
@Requied/ @Repository @Aspect
Spring 3.x阶段
Spring Framework3.0是一个里程碑式的时代,他的功能特性开始出现了非常大的扩展,比如全面拥抱
Java5、以及Spring Annotation。更重要的是,它提供了配置类注解@Configuration, 他出现的首要
任务就是取代XML配置方式
- @Configuration去xml化
核心目的是:把bean对象如何更加快捷的方式去加载到Spring IOC容器中
- Component-Scan - @Service @Repository@Controller
- Import
Enable模块驱动
自动完成相关相关组件的bean的装配
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8FDamqFk-1595741955712)(/Users/zhaojing/Book/mine/md/image/enable驱动.png)]
Spring3.x版本中,继承Redis或者mybatis
-
创建一个配置类
-
@bean注解来声明一个bean
@Bean DefaultKaptcha defaultKaptcaha(){}
-
@Bean启动一个模块,把相关组件的bean自动装配到IOC容器中