spring知识点总结

2021-05-29 13:02

阅读:357

标签:asp   通用   控制器   依赖   and   就是   invoke   第一步   请求   

一、spring是什么?

spring是一个轻量级的IOC和AOP的容器框架,是java应用程序提供基础性服务的一套框架。目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。

Spring Context:提供框架式的Bean访问方式,以及企业级功能(JNDI、定时任务等);
Spring Core:核心类库,所有功能都依赖于该类库,提供IOC和DI服务;
Spring AOP:AOP服务;
Spring Web:提供了基本的面向Web的综合特性,提供对常见框架如Struts2的支持,Spring能够管理这些框架,将Spring的资源注入给框架,也能在这些框架的前后插入拦截器;
Spring MVC:提供面向Web应用的Model-View-Controller,即MVC实现。
Spring DAO:对JDBC的抽象封装,简化了数据访问异常的处理,并能统一管理JDBC事务;
Spring ORM:对现有的ORM框架的支持;

二、spring的优点:

1、spring是底侵入式设计,代码的污染极低

2、spring的DI(依赖注入)机制将对象之间的依赖关系交给框架来管理,减低组件的耦合性

3、spring提供了AOP(面向切面)技术,可以将一些通用任务,如事务,日志,权限等进行集中式管理

4、spring对主流的框架都进行了集成支持

三、spring的IOC:

IOC就是控制反转,指的是创建对象对的权利交给spring框架进行管理,并由spring根据配置文件去创建实例和管理各个实例之间的依赖关系,对象对象之间松散耦合,利于复用,DI依赖注入和控制反转是一个概念的不同表示方式,就是应用程序在运行时依赖IOC容器来动态 注入对象需要的外部依赖

最直观的表达就是,以前创建对象需要New,也就是自己掌握创建对象的主动权和时机,IOC就是让创建对象不用去new,可以spring自动生产,使用java的反射机制,根据配置文件运行时动态去创建对象以及管理对象,并调用对象方法

spring有三种注入方式:注解注入,构造器注入,setter方法注入

四、spring的AOP:

oop是面向对象,AOP是面向切面,作为面向对象的一种补充,将那些与业务无关但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,提高系统的可维护性。可用于权限认证、日志、事务处理。

AOP实现的关键在于 代理模式,AOP代理主要分为静态代理动态代理。静态代理的代表为AspectJ;动态代理则以Spring AOP为代表。

(1)AspectJ是静态代理,也称为编译时增强,AOP框架会在编译阶段生成AOP代理类,并将AspectJ(切面)织入到Java字节码中,运行的时候就是增强之后的AOP对象。

(2)Spring AOP使用的动态代理,所谓的动态代理就是说AOP框架不会去修改字节码,而是每次运行时在内存中临时为方法生成一个AOP对象,这个AOP对象包含了目标对象的全部方法,并且在特定的切点做了增强处理,并回调原对象的方法。

Spring AOP中的动态代理主要有两种方式,JDK动态代理和CGLIB动态代理:

 ① JDK动态代理只提供接口的代理,不支持类的代理,要求被代理类实现接口。JDK动态代理的核心是InvocationHandler接口Proxy类,在获取代理对象时,使用Proxy类来动态创建目标类的代理类(即最终真正的代理类,这个类继承自Proxy并实现了我们定义的接口),当代理对象调用真实对象的方法时, InvocationHandler 通过invoke()方法反射来调用目标类中的代码,动态地将横切逻辑和业务编织在一起;

 ② 如果被代理类没有实现接口,那么Spring AOP会选择使用CGLIB来动态代理目标类。CGLIB(Code Generation Library),是一个代码生成的类库,可以在运行时动态的生成指定类的一个子类对象,并覆盖其中特定方法并添加增强代码,从而实现AOP。CGLIB是通过继承的方式做的动态代理,因此如果某个类被标记为final,那么它是无法使用CGLIB做动态代理的。

(3)静态代理与动态代理区别在于生成AOP代理对象的时机不同,相对来说AspectJ的静态代理方式具有更好的性能,但是AspectJ需要特定的编译器进行处理,而Spring AOP则无需特定的编译器处理。

五、spring mvc的生命周期:

技术图片

 

    第一步:发起请求到前端控制器(DispatcherServlet)
    第二步:前端控制器请求HandlerMapping(处理器映射器)查找 Handler
        可以根据xml配置、注解进行查找
    第三步:处理器映射器HandlerMapping向前端控制器返回Handler
    第四步:前端控制器调用处理器适配器去执行Handler
    第五步:处理器适配器去执行Handler
    第六步:Handler执行完成给适配器返回ModelAndView
    第七步:处理器适配器向前端控制器返回ModelAndView
        ModelAndView是springmvc框架的一个底层对象,包括 Model和view
    第八步:前端控制器请求视图解析器去进行视图解析
        根据逻辑视图名解析成真正的视图(jsp)
    第九步:视图解析器向前端控制器返回View
    第十步:前端控制器进行视图渲染
        视图渲染将模型数据(在ModelAndView对象中)填充到request域
    第十一步:前端控制器向用户响应结果

六、spring boot:

一个快速开发的脚手架。

基于springboot可以快速的开发单个微服务

约定大于配置

七、spring cloud

springcloud是基于springboot实现

spring知识点总结

标签:asp   通用   控制器   依赖   and   就是   invoke   第一步   请求   

原文地址:https://www.cnblogs.com/zmdbk/p/14769322.html


评论


亲,登录后才可以留言!