• Spring


    Spring

    • 低侵入式设计,代码的污染极低。
    • 独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺。
    • Spring的IoC容器降低了业务对象替换的复杂性,提高了组件之间的解耦。
    • Spring的AOP支持允许将一些通用任务如安全、事务、日志等进行集中式管理,从而提供了更好的复用。
    • Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问。
    • Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可自由选用Spring框架的部分或全部。

    来源:https://www.jianshu.com/p/4b31dacf3a63

    IOC

    Spring 容器是 Spring 框架的核心。容器将创建对象,把它们连接在一起,配置它们,并管理他们的整个生命周期从创建到销毁。Spring 容器使用依赖注入(DI)来管理组成一个应用程序的组件。这些对象被称为 Spring Beans,我们将在下一章中进行讨论。

    通过阅读配置元数据提供的指令,容器知道对哪些对象进行实例化,配置和组装。配置元数据可以通过 XML,Java 注释或 Java 代码来表示。下图是 Spring 如何工作的高级视图。 Spring IoC 容器利用 Java 的 POJO 类和配置元数据来生成完全配置和可执行的系统或应用程序。

    IOC 容器具有依赖注入功能的容器,它可以创建对象,IOC 容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。通常new一个实例,控制权由程序员控制,而"控制反转"是指new实例工作不由程序员来做而是交给Spring容器来做。在Spring中BeanFactory是IOC容器的实际代表者。

    Spring IoC 容器

    Spring 提供了以下两种不同类型的容器。

    序号 容器 & 描述
    1 Spring BeanFactory 容器它是最简单的容器,给 DI 提供了基本的支持,它用 org.springframework.beans.factory.BeanFactory 接口来定义。BeanFactory 或者相关的接口,如 BeanFactoryAware,InitializingBean,DisposableBean,在 Spring 中仍然存在具有大量的与 Spring 整合的第三方框架的反向兼容性的目的。
    2 Spring ApplicationContext 容器 该容器添加了更多的企业特定的功能,例如从一个属性文件中解析文本信息的能力,发布应用程序事件给感兴趣的事件监听器的能力。该容器是由 org.springframework.context.ApplicationContext 接口定义。

    ApplicationContext 容器包括 BeanFactory 容器的所有功能,所以通常建议超过 BeanFactory。BeanFactory 仍然可以用于轻量级的应用程序,如移动设备或基于 applet 的应用程序,其中它的数据量和速度是显著。

    AOP 拦截器的优势有哪些?

    • Spring AOP的底层都是通过代理来实现的

    • 一种是基于JDK的动态代理一种是基于CgLIB的动态代理

    • 拦截器是基于Java反射机制实现的,使用代理模式

    SpringIOC和AOP中用到的设计模式

    简单工厂

    在Spring中经常利用BeanFactory的getBean方法去获取Bean就是一个简单工厂的设计模式的实现,通过Bean的ID去获取这个对象的实例。Bean的ID一般配置在XML文件中

    工厂方法

    在工厂方法模式中, Spring不会直接利用反射机制创建bean对象, 而是会利用反射机制先找到Factory类,然后利用Factory再去生成bean对象。

    而Factory Mothod方式也分两种, 分别是静态工厂方法 和 实例工厂方法。

    SpringMVC执行流程

    百度:https://baijiahao.baidu.com/s?id=1619457240482668189&wfr=spider&for=pc

    摘自:菜鸟教程,W3Cschool

  • 相关阅读:
    A*算法的原理 <转>
    Unity性能优化之 Draw Call原理<转>
    关于XML中:XmlNode和XmlElement的涵义及不同之处
    MySql 数据库连接池
    代码中批量执行Oracle SQL语句
    科密指纹考勤机B329采集
    VB网络编程(webbrowser+Inet+抓包封包+经验)
    Lambda表达式
    网络编程
    多线程
  • 原文地址:https://www.cnblogs.com/PoetryAndYou/p/11580908.html
Copyright © 2020-2023  润新知