zoukankan      html  css  js  c++  java
  • spring问题

    1.你对Spring框架的理解?

    2.      Spring的优点?

    • 简化开发,解耦,集成其它框架。
    • 低侵入式设计,代码污染级别级别。
    • Spring的DI机制降低了业务对象替换的复杂性,提高了软件之间的解耦。
    • Spring AOP支持将一些通用的任务进行集中式的管理,例如:安全,事务,日志等,从而使代码能更好的复用。

    3. 什么是控制反转?什么是依赖注入?

       控制反转(IOC)就是将对象的创建权反转给(交给)Spring。就是将原本在程序中手动创建对象的控制权,交由Spring框架管理。

       依赖注入(DI)是指在Spring创建对象的过程中,将这个对象所依赖的属性注入(设置)进来

     4. Java中实现依赖注入的三种方式?

    • 构造函数注入
    • setter方法注入
    • 接口注入

    5. Spring中创建对象的三种方式?

    • 利用默认的构造方法
    • 利用静态工厂方法
    • 利用动态工厂方法

    6. Spring有几种配置方式?

    • 基于xml文件的配置
    • 基于注解的配置

    7. Spring Bean的生命周期?

      指Spring中bean元素被实例化,和被销毁的过程。我们通过init-method属性指定初始化方法;通过destroy-method方法指定销毁方法。当Bean的作用域为prototype的时候,destroy-method不会被调用。

    8. 什么叫延迟加载?

      在spring的配置文件bean中有一个属性 lazy-init="default/true/false"

        1)  如果lazy-init为"default/false"在启动spring容器时创建对象(默认情况)

        2) 如果lazy-init为"true",在context.getBean时才创建对象

      第一种情况可以在启动Spring容器的时候,检查Spring容器配置文件的正确性,缺点是把一些bean过早地放在了内存中;第二种情况可以减少内存的消耗,但不容易发现错误。

    9. 什么是自动装配?

      就是自动将一个Bean注入到其他Bean的Property中。默认情况下,容器不会自动装配,需要我们手动设置被注入Bean的autowire属性。自动装配有三种方式:

    • byName
    • byType
    • 由构造函数自动装配:这种模式与 byType 非常相似,但它应用于构造器参数

    10. Spring Bean的作用域?

    • Singleton:单例模式,在整个spring IOC容器中,使用singleton定义的bean将只有一个实例。
    • Prototype:多例模式,每次通过容器中的getBean方法获取prototype定义的beans时,都会产生一个新的bean的实例。
    • Request:对于每次Http请求,使用request定义的bean都会产生一个新的实例,只有在web应用时候,该作用域才会有效。
    • Session:对于每次Http Session,使用session定义的Bean都将产生一个新的实例。
    • Globalsession:每个全局的Http Session,使用session定义的Bean都将产生一个新的实例。

    11. Spring中的Bean是线程安全的吗?

      Spring框架并没有对单例的bean进行多线程的封装处理,线程安全问题和并发问题,需要我们开发者自己考虑。

      但实际上,大部分的Spring bean并没有可变的状态(比如:service类和dao类),所以在某种程度上来说Spring单例bean是线程安全的。如果bean有多种状态的话(比如:View Model对象),就需要自行考虑线程安全问题。

    12. 如何在Spring中注入一个Java Collection?

      <list>:允许重复

       

      <set>:不允许重复

       

      <map>:用来注入名称-值对的集合,其中名称和值可以是任何类型

       

      <props>:用来注入名称-值对的集合,其中名称和值都是字符串类型

       

    13.Spring框架中都用到了哪些设计模式?

    • 代理模式,在AOP中被使用最多。
    • 单例模式,在Spring配置文件中定义bean的时候默认的是单例模式。
    • 工厂模式, BeanFactory用来创建对象的实例。
    • 模板方法, 用来解决重复性代码。
    • 前端控制器,Spring提供了DispatcherServlet来对请求进行分发。
    • 视图帮助,Spring提供了一系列的JSP标签。
    • 依赖注入,它是惯穿于BeanFactory/ApplicationContext接口的核心理念

    14.   Spring AOP(面向切面)编程的原理?

        AOP面向切面编程,它是一种思想。它就是针对业务处理过程中的切面进行提取,以达到优化代码,减少重复代码的目的。 就比如,在编写业务逻辑代码的时候,我们习惯性的都要写:日志记录,事物控制,以及权限控制等,每一个子模块都要写这些代码,代码明显存在重复。这时候,我们运用面向切面的编程思想,采用横切技术,将代码中重复的部分,不影响主业务逻辑的部分抽取出来,放在某个地方进行集中式的管理,调用。 形成日志切面,事物控制切面,权限控制切面。 这样,我们就只需要关系业务的逻辑处理,即提高了工作的效率,又使得代码变的简洁优雅。这就是面向切面的编程思想,它是面向对象编程思想的一种扩展。

  • 相关阅读:
    kubernetes dashboard 二次开发
    grafana二次开发
    Harbor 定制页面 和 二次开发指南
    spring boot 知识点1
    spring boot2.1读取 apollo 配置中心3
    apollo 部门管理
    spring boot2.1读取 apollo 配置中心2
    a 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
    Net上机考试
    Net(ASP.NET)程序设计
  • 原文地址:https://www.cnblogs.com/toria/p/spring_question.html
Copyright © 2011-2022 走看看