zoukankan      html  css  js  c++  java
  • 【面试】Spring 执行流程

    Spring Aop的实现原理:

    1. AOP 的全称是  Aspect Orient Programming  ,即面向切面编程。是对 OOP (Object Orient Programming) 的一种补充,专门用于处理一些具有横切性质的服务。常常用于日志输出、、安全控制等。
    2. AOP(面向切面编程思想)主要是的实现技术有 Spring AOP  和  AspectJ。
      1. AspectJ 的底层技术:AspectJ 的底层技术是静态代理,即用一种AspectJ 支持的特定语言编写切面,通过一个命令来编译,生成一个新的代理类,该代理类增强了业务类,这是在编译时增i强,相对于下面说的运行时增强,编译时增强的性能更好。
      2. Spring AOP : Spring AOP 采用的是动态代理,在运行期间对业务方法进行增强,所以不会生成新类,对于动态代理技术,Spring AOP 提供了对 JDK 动态代理的支持以及 CFLib的支持。

         JDK 动态代理只能为接口创建动态代理实力,而不能对类创建动态代理。需要获得被目标类的接口信息(应用 JAVA 的反射技术),生成一个实现了代理接口的动态代理类(字节码),再通过反射机制获得动态代理类的构造函数,利用构造函数生成动态代理类的实例对象,在调用具体方法前调用 invokeHandler 方法来处理。

      CGLib 动态代理需要依赖ASM包,把代理对象类的 class 文件加载进来,修改其字节码生成子类。

      但是 Spring AOP 基于注解配置的情况下,需要依赖于 AspectJ 包的标准注解,但是不需要额外的编译以及 AspectJ 的植入器,而基于 XML 配置不需要。


     

    Spring ioc的实现原理:

    1. :控制反转也叫依赖注入,IOC利用java反射机制,AOP利用代理模式。所谓控制反转是指,本来被调用者的实例是有调用者来创建的,这样的缺点是耦合性太强,IOC则是统一交给spring来管理创建,将对象交给容器管理,你只需要在spring配置文件总配置相应的bean,以及设置相关的属性,让spring容器来生成类的实例对象以及管理对象。在spring容器启动的时候,spring会把你在配置文件中配置的bean都初始化好,然后在你需要调用的时候,就把它已经初始化好的那些bean分配给你需要调用这些bean的类。
      ----------------------------------------------------------------------------------------------
      原文链接:https://blog.csdn.net/monkeyduck/article/details/54344890


    Spring的执行流程:

    WEB 容器启动时,Spring 加载执行步骤

      1. 执行 Web.XML 中的 ContextLoaderListener 监听器
      2. 初始化 COntextLoaderListener 中的 ContextInitialized 方法
      3. ContextInitialized 方法中调用父类 ( ContextLoader ) 的 initWebAppcalicationContext 的方法
      4. initWebAppcalitionContext 方法中执行了三个任务
        1. 创建 WebApplicationContext 容器
        2. 加载 Context-Param 中配置的 Spring 配置文件
        3. 初始化配置文件中及创建配置文件中的 bean
      5. Web 容器停止时候会执行 ContextLoaderLoaderListener 的 ContextDesroyed 方法销毁 Context 容器

    SSM框架的工作原理(执行原理,必问):

    1. 用户发送请求至前端控制器 DispatcherServlet
    2. DispatcherServlet 收到请求调用 HandlerMapping 处理映射器。
    3. 处理映射器根据请求 url 找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给 DispatcherServlet 。
    4. DispatcherServlet 通过 HandlerAdapter 处理器适配器调用处理器。
    5. 执行处理器(Controller,也叫后端处理器)执行完成返回ModelAndVIew.
    6. HandlerAdapter 将 Controller 执行结果 ModelAndView 返回给 DispatcherServlet
    7. DispatcherServlet 将ModelAndView 传给 ViewReslover 视图解析器
    8. ViewReslover 解析后返回具体 View
    9. DispatcherServlet 对 View 进行渲染视图(即将模型数据填充至视图中)
    10. DispatcherServlet 响应用户

    什么是 SpringMvc ?

    SpringMvc 是 Spring 框架的一个模块, SpringMvc 和 Spring 无需通过中间整合层进行整合。

    SpringMvc 是基于 MVC 的一个 Web 框架。

  • 相关阅读:
    分布式机器学习:算法、理论与实践——【1】
    LLVM Cookbook
    【前端】Webpack 进阶
    Noip2015 运输计划 树上差分 二分答案
    bzoj 2259: [Oibh]新型计算机 最短路 建模
    888E
    [ZJOI2012]旅游 对偶图 树的直径
    [HAOI2007]理想的正方形 单调队列 暴力
    bzoj1457: 棋盘游戏 SG函数 Nim
    Bomb HDU
  • 原文地址:https://www.cnblogs.com/EveningWind/p/11393445.html
Copyright © 2011-2022 走看看