• Spring总结


    Spring Framework

    Spirng Framework 特有功能

    轻量级 - Spring 在代码量和透明度方面都很轻便。
    
    IOC - 依赖注入(setter和构造函数),控制反转。
    
    IOC容器 - Spring 负责创建和管理对象(Bean)的生命周期和配置。
    
    AOP - 面向切面编程可以将应用业务逻辑和系统服务分离,以实现高内聚。
    
    MVC - 对 web 应用提供了高度可配置性,其他框架的集成也十分方便。
    
    事务管理 - 提供了用于事务管理的通用抽象层。Spring 的事务支持也可用于容器较少的环境。
    
    JDBC 异常 - Spring 的 JDBC 抽象层提供了一个异常层次结构,简化了错误处理策略。
    

    Spring 常用组件

    Core:只要提供Ioc依赖注入
    
    Aspects:与Aspectj集成提供支持
    
    AOP:面向切面编程的实现
    
    JDBC:java数据库连接
    
    JMS:java消息服务
    
    ORM:持久化工具
    
    web:为web应用提供支持
    
    text:为单元测试提供支持
    

    Spring Bean

    Spring bean 支持 5 种 scope:
    
        Singleton - 每个 Spring IoC 容器仅有一个单实例。
    
        Prototype - 每次请求都会产生一个新的实例。
    
        Request - 每一次 HTTP 请求都会产生一个新的实例,并且该 bean 仅在当前 HTTP 请求内有效。
    
        Session - 每一次 HTTP 请求都会产生一个新的 bean,同时该 bean 仅在当前 HTTP session 内有效。
    
        Global-session - 仅在基于 portlet 的 web 应用中才有意义。
    

    Spring Bean 容器的生命周期

    spring bean 容器的生命周期流程如下:
    
    	1. 实例化 - Spring 容器根据配置中的 bean 定义实例化 bean
    
    	2. 属性注入 - Spring 使用依赖注入填充所有属性,如 bean 中所定义的配置
    
    	3. setBeanName() - 如果 bean 实现 BeanNameAware 接口,则工厂通过传递 bean 的 ID 来调用 setBeanName()
    
    	4. setBeanFactory() - 如果 bean 实现 BeanFactoryAware 接口,工厂通过传递自身的实例来调用 setBeanFactory()
    
    	5. 依赖bean注入前 - 如果存在与 bean 关联的任何 BeanPostProcessors,则调用 preProcessBeforeInitialization() 方法
    
    	6. 自定义初始化调用 - 如果为 bean 指定了 init 方法(init-method),那么将调用它。
    
    	7. 依赖bean注入后 - 最后,如果存在与 bean 关联的任何 BeanPostProcessors,则将调用 postProcessAfterInitialization() 方法
    
    	8. 自定义销毁调用 - 如果 bean 实现 DisposableBean 接口,当 spring 容器关闭时,会调用 destory()
    
    	9. 自定义销毁调用 - 如果为 bean 指定了 destroy 方法(destroy-method),那么将调用它
    

    Spring IOC 容器(底层是Map,解耦,即时与延迟加载)

    将程序原本手动创建对象的控制权交给Spring容器管理。
    
    Spring 框架的核心是 Spring 容器。容器创建对象,将它们装配在一起,配置它们并管理它们的完整生命周期。
    
    原理:工厂模式加反射机制。
    
    两种IOC容器:
    
    	BeanFactory - BeanFactory 就像一个包含 bean 集合的工厂类。它会在客户端要求时实例化 bean。
    
    	ApplicationContext - ApplicationContext 接口扩展了 BeanFactory 接口。它在 BeanFactory 基础上提供了一些额外的功能。
    
    Ioc初始化过程:
    	XML -读取> Resource -解析> BeanDefinition -注册> BeanFactory
    

    AOP(面向切面编程)

    将业务无关却共同调用的逻辑(日志管理,权限控制)封装起来,减少重复代码,降低耦合,提高可扩展性和可维护性。
    
    Spring AOP 基于动态代理方式实现(反射机制):JDK代理(代理对象需要实现接口)
    AspectJ 基于静态代理方式实现(字节码操作):CGLib代理(生成代理对象的子类)
    

    Spring MVC(模型-视图-控制器)

    1. 向服务器发送HTTP请求,请求被DispatcherServlet(前端控制器)捕获。
    
    2. DispatcherServlet调用HandlerMapping(处理器映射器)获得该Handler配置的所有相关的对象(包括Handler以及Handler对应的拦截器),最后以HandlerExecutionChain(执行链)的形式返回。
    
    3. DispatcherServlet根据获得的Handler,选择一个合适的HandlerAdapter。(附注:如果成功获得HandlerAdapter后,此时将开始执行拦截器的preHandler(…)方法)。
    
    4. HandlerAdapter去执行Hander。提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)。在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作:
    
        HttpMessageConveter:将请求消息(如 Json、xml 等数据)转换成一个对象,将对象转换为指定的响应信息。
    
        数据转换:对请求消息进行数据转换。如String转换成Integer、Double等。
    
        数据根式化:对请求消息进行数据格式化。如将字符串转换成格式化数字或格式化日期等。
    
        数据验证:验证数据的有效性(长度、格式等),验证结果存储到`BindingResult`或`Error`中。
    
    
    5. 返回ModelAndView。Handler(Controller)执行完成后,向 DispatcherServlet 返回一个 ModelAndView 对象;
    
    6. 选择并返回 ViewResolver。根据返回的ModelAndView,选择一个适合的ViewResolver(必须是已经注册到Spring容器中的ViewResolver)返回给DispatcherServlet。
    
    7. 渲染视图。ViewResolver 结合Model和View,来渲染视图。
    
    8. 返回视图到客户端。视图负责将渲染结果返回给客户端。
    

    Spring用到的设计模式

    工厂模式:IOC(BeanFactory,ApplicationContext)
    
    代理模式:AOP
    
    单例模式:Spring Bean
    
    模板方法模式:Template
    
  • 相关阅读:
    刷题篇--热题HOT 71-80
    刷题篇--热题HOT 61-70
    双飞翼布局介绍-始于淘宝UED
    css布局——百度前端技术学院
    CSS多列布局Multi-column、伸缩布局Flexbox、网格布局Grid详解
    CSS之BFC详解
    深入理解BFC和Margin Collapse
    CSS 布局_如何实现容器中每一行的子容器数量随着浏览器宽度的变化而变化?
    3列、2列自适应布局,中部内容优先显示3列布局等方法
    三列布局,中间自适应
  • 原文地址:https://www.cnblogs.com/loveer/p/12580435.html
Copyright © 2020-2023  润新知