美文网首页
spring知识点更新

spring知识点更新

作者: 没睡醒的鱼 | 来源:发表于2018-04-27 18:53 被阅读10次

    什么是spring

    Spring 是个开发java企业级应用的开源框架,Spring 框架目标是简化Java企业级应用开发

    Spring的好处

    • 轻量:Spring 是轻量的,基本的版本大约2MB
    • IOC+DI:降低了组件之间的耦合性
    • AOP
    • MVC框架:springmvc提供了对web更好的支持
    • 事务管理:Spring 提供一个持续的事务管理接口

    静态织入

    什么是织入:允许我们向现有的类添加新的方法或属性
    原理:在编译期,切面直接以字节码形式编译到目标字节码文件中
    优点:对系统性能无影响
    缺点:不够灵活

    Spring IOC的一些知识点补充

    IOC:控制反转;是指容器控制程序对象之间的关系,而不是传统实现中,由程序代码直接操控。控制权由应用代码中转到了外部容器,控制权的转移是所谓反转。对于Spring而言,就是由Spring来控制对象之间的关系;控制反转是为了降低类与类之间的耦合度
    DI:依赖注入
    简单的来说就是IOC是目的,DI是实现IOC的手段

    spring中依赖注入的三种实现方式
    • 构造器注入:将被依赖对象通过构造函数参数注入给依赖对象,并且在初始化对象的时候注入。优点:对象初始化完成后便可以获得可使用的对象;缺点:1.当需要注入的对象很多时,构造器的参数列表将会很长,2.不够灵活,若有多种注入方式,每种方式只需注入指定几个依赖,那么需要提供多个重载的构造函数。
    • setter方法注入:通过调用成员变量提供的setter函数将被依赖对象注入给依赖类;优点:灵活,可以选择性的注入依赖的对象。缺点:依赖对象初始化完成后尚未注入被依赖对象,因此还不能使用。
    • 接口注入:依赖类必须实现指定的接口,实现接口中的函数,该函数用于依赖注入,该函数的参数就是要注入的对象。缺点:侵入性太强,不建议使用

    什么是AOP

    分布于应用多处的功能称为横切关注点,他们与业务逻辑是相分离的,却被多个业务代码调用。AOP可以实现横切关注点和它们所影响对象之间的解耦

    spring事务

    Spring支持两种类型的事务管理:
    • 编程式事务管理:通过编程的方式管理事务,灵活性高,难以维护
    • 声明式事务管理:可以将业务代码和事务管理分离,你只需用注解和XML配置来管理事务
    Spring事务的优点

    为不同的事务API 如 JTA,JDBC,JPA 提供了一致的编程模型

    cglib动态代理的实现过程
    • 定义业务类
    • 实现MethodInterceptor接口创建代理类
    • 调用代理类的getInstance方法返回一个动态代理对象(它是业务类的子类),通过动态代理对象调用各种方法
    Spring Bean的实例化过程
    • 调用Bean的默认构造方法生成bean实例:bean1
    • 检查Bean配置文件中是否注入了Bean的属性,如果有注入,则在bean1实例的基础上对其属性进行注入,把原来的bean1给覆盖掉生成新的实例:bean2
    • 检查Bean是否实现了InitializingBean接口,如果实现了此接口,则调用afterPropertiesSet()方法把bean2覆盖形成新的bean实例:bean3
    • 检查Bean配置文件中是否指定了init-method属性,如果已指定,则调用此属性对应方法并对把bean3覆盖形成新的实例:bean4。
    Spring Bean的生命周期
    • Spring对Bean进行实例化(相当于程序中的new Class())
    • Spring将值和Bean的引用注入进Bean对应的属性中
    • 如果Bean实现了BeanNameAware接口,Spring将调用setBeanName()方法并将Bean的ID作为参数传入
    • 如果Bean实现了BeanFactoryAware接口,Spring将调用setBeanFactory()方法并把BeanFactory容器实例作为参数传入
    • 如果Bean实现了ApplicationContextAware接口,Spring容器将调用setApplicationContext()方法,把应用上下文作为参数传入
    • .如果Bean实现了BeanPostProcess接口,Spring将调用它们的postProcessBeforeInitialization(预初始化)方法,对Bean进行修改,增加某个功能
    • 如果Bean实现了InitializingBean接口,Spring将调用它们的afterPropertiesSet方法,是在Bean的全部属性设置成功后执行的初始化方法
    • 如果Bean实现了BeanPostProcess接口,Spring将调用它们的postProcessAfterInitialization(后初始化)方法
    • 如果Bean实现了DispostbleBean接口,Spring将调用它的destory方法,是在Bean实例销毁前执行的方法

    相关文章

      网友评论

          本文标题:spring知识点更新

          本文链接:https://www.haomeiwen.com/subject/yijfkftx.html