标签: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实现
标签:asp 通用 控制器 依赖 and 就是 invoke 第一步 请求
原文地址:https://www.cnblogs.com/zmdbk/p/14769322.html