zoukankan      html  css  js  c++  java
  • Java理论-Spring框架

    使用Spring框架的好处是什么

    • 轻量:Spring是轻量的,基本的版本大约2MB。
    • 控制反转(IOC):Spring通过控制反转实现了松散耦合,对象给出它们的依赖,而不是创建或查找依赖的对象。
    • 面向切面编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。
      容器:Spring包含并管理应用中所有对象的生命周期和配置。
    • MVC框架:Spring的Web框架是个精心设计的框架,是Web框架的一个很好的替代品。
    • 事务管理:Spring提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。
    • 异常处理:Spring提供方便的API把具体技术相关的异常(比如由JDBC,Hibernate or JDO抛出的)转化为一致的unchecked异常。

    Spring Bean 的生命周期

    在一个Bean实例被初始化时,需要执行一系列的初始化操作以达到可用的状态。同样的,当一个Bean不在被调用时需要进行相关的析构操作,并从Bean容器中移除。
    Spring bean factory负责管理在Spring容器中被创建的Bean的生命周期。Bean的生命周期由两组回调(call back)方法组成。

    1. 实例化一个Bean--也就是我们常说的new;
    2. 按照Spring上下文对实例化的Bean进行配置--也就是IOC注入;
    3. 如果这个Bean已经实现了BeanNameAware接口,会调用它实现的setBeanName()方法,此处传递的就是Spring配置文件中Bean的id值;
    4. 如果这个Bean已经实现了BeanFactoryAware接口,会调用它实现的setBeanFactory()传递的是Spring工厂自身;
    5. 如果这个Bean已经实现了ApplicationContextAware接口,会调用setApplicationContext()方法,传入Spring上下文;
    6. 如果这个Bean关联了BeanPostProcessor接口,将会调用postProcessBeforeInitialization()方法,BeanPostProcessor经常被用作是Bean内容的更改,并且由于这个是在Bean初始化结束时调用那个的方法,也可以被应用于内存或缓存技术;
    7. 如果Bean在Spring配置文件中配置了init-method属性会自动调用其配置的初始化方法;
    8. 如果这个Bean关联了BeanPostProcessor接口,将会调用postProcessAfterInitialization()方法;
    9. 当Bean不再需要时,会经过清理阶段,如果Bean实现了DisposableBean这个接口,会调用那个其实现的destroy()方法;
    10. 最后,如果这个Bean的Spring配置中配置了destroy-method属性,会自动调用其配置的销毁方法。

    Spring Bean的作用域

    Spring容器中的Bean可以分为5个作用域范围。

    1. singleton: 默认值,Bean在每个Spring IOC 容器中都只有一个实例。
    2. prototype:一个Bean的定义可以有多个实例。
    3. request:每次HTTP请求都会创建一个Bean,该作用域仅在基于Web的Spring ApplicationContext情形下有效。
    4. session:在一个HTTP Session中,一个Bean定义对应一个实例。该作用域仅在基于Web的Spring ApplicationContext情形下有效。
    5. global-session:在一个全局的HTTP Session中,一个Bean定义对应一个实例。该作用域仅在基于Web的Spring ApplicationContext情形下有效。

    Spring 中用到的设计模式

    1. 代理模式:AOP主要就是利用代理模式实现。
    2. 单例模式:在Spring配置文件中定义的Bean默认为单例模式。
    3. 工厂模式:BeanFactory用来创建对象的实例。
    4. 模板方法:用来解决代码重复的问题。比如:RestTemplate, JmsTemplate, JpaTemplate。
    5. 前端控制器:Spring提供了DispatcherServlet来对请求进行分发。
    6. 视图帮助:Spring提供了一系列的JSP标签,高效宏来辅助将分散的代码整合在视图里。
    7. 依赖注入:贯穿于BeanFactory/ApplicationContext接口的核心理念。

    什么是Spring IOC容器?Spring IOC的优点是什么?

    IOC称为控制反转,IOC是一种编程思想,是一种架构艺术,利用这种思想可以很好地实现模块之间的解耦。
    Spring IOC 负责创建对象,管理对象,通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期。
    IOC或依赖注入把应用的代码量降到最低。它使应用容易测试,单元测试不再需要单例和JNDI查找机制。最小的代价和最小的侵入性使松散耦合得以实现。
    IOC容器支持加载服务时的饿汉式初始化和懒加载。

    什么是Spring AOP ?Spring AOP的优点是什么?

    AOP称为面向切面编程。主要是利用代理模式,把许多接口都要用的又和接口本身主要的业务逻辑无关的部分抽出来,写成一个切面,单独维护,比如权限验证。这样可以使接口符合“单一职责原则”,只关注主要的业务逻辑,也提高了代码的重用性。

    Spring AOP的应用场景

    权限验证,日志,异常,事务,缓存。。。

    Spring 的核心类有哪些?各有什么作用?

    1. BeanFactory:产生一个新的实例,可以实现单例模式。
    2. BeanWrapper:提供统一的get及set方法。
    3. ApplicationContext:提供框架的实现,包括BeanFactory的所有功能。

    Spring支持的事务管理类型有哪些?你在项目中使用哪种方式

    Spring支持编程式事务管理和声明式事务管理两种。

    许多Spring框架的用户选择声明式事务管理,因为这种方式和应用程序的关联较少,因此更加符合轻量级容器的概念。声明式事务管理要优于编程式事务管理,尽管在灵活性方面它弱于编程式事务管理,因为编程式事务允许你通过代码控制业务。

    基于AOP实现的声明式事务管理,实质就是:在方法执行前后进行拦截,然后在目标方法开始之前创建并加入事务,执行完目标方法后根据执行情况提交或回滚事务。

    声明式事务管理又有两种方式:基于XML配置文件的方式;另一个是在业务方法上进行@Transactional注解,将事务规则应用到业务逻辑中。

    BeanFactory 和 ApplicationContext 有什么区别?

    ApplicationContext接口继承BeanFactory接口,Spring核心工厂是BeanFactory,BeanFactory采取延迟加载,第一次getBean时才会初始化Bean, ApplicationContext是会在加载配置文件时初始化Bean。

    ApplicationContext是对BeanFactory进行了扩展,它可以进行国际化处理、事件传递和Bean自动装配以及各种不同应用层的Context实现,开发中基本都在使用ApplicationContext,Web项目使用WebApplicationContext,很少用到BeanFactory。

  • 相关阅读:
    推荐系统中相似度综述与对比
    vue+elementui进阶之路eltable中显示图片
    机器学习
    kali (vm虚拟机)桥接模式无法上网
    win10系统怎么删除远程桌面连接记录
    图像相似度匹配——距离大全
    element UI表格单元格展示多张图片
    elementui table中的图片的显示 解决方案
    elementui去掉行选中背景颜色以及单元格合并
    elementplus引入无效 vue3
  • 原文地址:https://www.cnblogs.com/mihuk/p/13296168.html
Copyright © 2011-2022 走看看