• Spring小结


    1.Spring:

      Spring的核心宗旨是简化企业级应用开发,同时给复杂的问题提供强大非侵入性框架。

      Spring是一个轻量级的ioc和aop容器框架,Spring框架提供功能是由用户自己来决定的,用户要什么功能就调用什么功能并使用。

     

    2.Spring的优点:

      (1)Spring属于低侵入性框架,代码的污染极低。

      (2)动态解耦,简化开发:提供了ioc容器,将对象之间的依赖交给Spring控制。

      (3)aop编程的支持

      (4)声明式事务的支持

      (5)方便集成各种优秀的框架

    3.IOC(控制反转):

      IOC控制反转指将设计好的类交给Spring容器管理,而不是类的内部自己进行控制。将创建对象的的控制权转移到Spring容器中,并有容器根据配置文件去创建实例和管理各个实例之间的依赖关系,降低耦合,也利于功能的复用。

    4.依赖注入的方式:

      (1)set注入:property(实体类)中存在set()方法,默认通过反射调用无参构造器。

      (2)构造器注入:根据类型或下标注入(最好还存在类型,从0开始)。

      (3)注解注入:@Autowire根据byType,再添加@Qualifier按byName。

               @Resource默认根据byName,再按照byType(javax包中的注解)

    5.Spring的自动装配:

       autowire中的值:通过设置autowire的值自动进行依赖注入。

      (1)no:默认不进行自动装配,通过<ref>标签来装配bean。

      (2)byName:根据bean名称来进行自动装配。

      (3)byType:根据参数的数据类型来进行自动装配。

      (4)constructor:利用构造函数进行自动装配,并且构造函数的参数通过bytype进行自动装配。

      (5)autodetect:自动探测,有构造方法,通过构造方法自动装配,否则通过bytype的方法自动装配。

    6.bean的作用域:

      (1)singleton:IOC容器中只存在一个bean实例,bean默认以单例的模式存在

      (2)prototype:每次容器调用bean时都会返回一个实例。

      (3)request:适用于webApplicationContext,每次http请求都会创建一个新的bean。

      (4)session:使用于webApplicationContext,同一个HTTPSession共享一个bean,不同的session使用不同的bean。

      (5)globalSession:适用于webApplicationContext,适用于protlet应用环境。

    7.AOP(面向切面编程):

      AOP通过预编译和动态代理实现程序功能统一维护的一种技术。

      在运行期间,将两块代码动态的结合在一起。

      利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,

      提高程序的可重用性。

    8.动态代理:

      1.jdk代理(目标类和代理类实现统一接口):使用反射技术(默认代理方式,不实现同一接口就用cglib)。

      2.第三方jar包(cglib:目标类和代理类是继承关系):通过字节码为目标类创建一个子类对象,

         并且子类对象中拦截父类的所有方法的调用,然后在方法调用的前后添加想加入执行的代码。

    9.设计模式

      (1)工厂模式:创建工厂类对象实例的时候。

      (2)单例模式:bean默认为单例模式。

      (3)代理模式:aop的动态代理。

      (4)模板方法:解决代码重复问题。(Template)

      (5)观察者模式:当一个对象的状态改变时,所有依赖它的对象都会得到通知被制动更新。

    推荐:Spring的面试总结(个人觉得还不错):https://blog.csdn.net/a745233700/article/details/80959716

  • 相关阅读:
    python_day25_私有变量(在变量前加两个下划线即可)_私有方法_静态方法_
    python的切片操作
    python_静态字段_普通字段_静态方法@staticmethod__静态类@classmethod_属性@property、@per.setter、@per.deleter
    python_class_类_对象_自己改编的一个选英雄的小程序
    python_类_方法_对象_实际应用
    python_day24_class_类_继承
    python_day24_class_类_方法_对象
    python_day不知道_json方法存字典中的内容到文本中
    python_dayo20_if __name__ == '__main__':的学习
    python_day20_自己定义模块和模块的调用_包(Package)以及包之间的调用
  • 原文地址:https://www.cnblogs.com/spring-effort/p/11552895.html
Copyright © 2020-2023  润新知