大家都知道spring-springmvc-springboot-springcloud等spring技术,但是,知道为何会有这么多sping的技术呢?其实这也是我一直的疑问,然后通过自己的工作和查找资料,有了一些浅薄的看法。错了请指正哈!
spring
首先,我门要知道spring是一个生态体系或者说是一个技术体系。
spring的核心是IOC(inverse of control 控制反转)和AOP(aspect oriend program面向切面编程)。
IOC
是一种思想,不是一种技术,且不仅仅应用再spring这里。
作用:把创建对象的功能交由spring容器管理。(依靠注解来实现@Component,@Repository,@Service,@Controller)
在实际应用中用注解@Resource或者@Autowire注入到想要用的的地方。
利用了工厂模式
AOP
AOP也是一种思想。
概念:就是把重复的代码抽取出来,然后用动态代理对已有的方法进行加强。
在实际的运用中,我们更多的是使用注解的方式。大致常用两种使用方式:
方式一:用切入点表达式
方式二:@annotation结合注解一起使用
具体的使用,亲看后面的文章:AOP的实际使用
拓展:
①对方法的加强,有两种方法:
第一种:装饰者模式(静态代理),采用创建对象的包装类 (每次使用都得创建)
第二种:代理模式,运用动态代理来创建代理对象(这个只需要一个包装类)
②动态代理 → AOP → 声明式事务
AOP的原理是动态代理,声明式事务的原理是AOP
什么是动态代理呢?请查看我后面你都文章!
springmvc
-
有了spring,但是无法直接把前后端之间关联起来,故而,有了springmvc。
-
springmvc是基于spring和mvc架构的框架,通过XML配置,统一前端试图和后端逻辑接口。
web层(springmvc),业务层(ioc),持久层(jdbc) -
前后端的连接点就是把web开发路径映射(接口)和视图渲染(接口返回的数据)的DispatcherServlet前置控制器。
-
springmvc的核心是:DispatcherServlet前置控制器,DispatcherServlet实质也是一个HttpServlet。DispatcherSevlet负责将请求分发,所有的请求都有经过它来统一分发。
注意:springmvc的执行流程是面试的时候特别喜欢问的问题。
springboot
因为springmvc的xml配置太复杂了,所以为了简化配置这一步(前后端解耦),就有了springboot。
springboot能够快速的开发的单个微服务,此时,就不需要tomcat了。
springcloud
- springcloud是基于springboot实现的,关注的是全局的微服务整合和管理。
- 将多个springboot单微服务进行整合和管理。
- springboot是单微服务,springcloud依赖springboot。
总结:
spring是一种技术生态体系;
springmvc是为了通过DispatcherServlet前置控制器把前端请求和后端接口绑定;
springboot是为了让springmvc的前后端解耦,且简化xml配置的单个微服务框架;
springcloud这是依赖且整合管理多个springboot单个微服务。