Java每日面试题5题(二)—— Spring相关篇

一、Spring的优点
  • 非侵入性设计
    是应用程序代码对框架的依赖最小化,代码的污染极低。

  • 解耦
    Spring相当于一个大工厂,将所有对象的创建和依赖关系的维护工作都交由Spring容器进行管理,大大降低了组件之间的耦合性。

  • AOP
    支持将一些通用任务,如安全、事务、日志、权限等进行集中式管理,从而提供更好的复用。

  • 支持声明式事务处理
    只需要通过配置就可以完成对事务的管理,无须手动编程。

  • 方便集成各种优秀框架

  • 降低了JavaEE对API的使用难度
    对一些难用的API(如JDBC、JavaMail)等,Spring提供了封装,使这些API的应用难度大大降低。

二、说说你对IOC的理解
  • 控制反转 (Ioc)

Ioc全称 Inversion of Control,即控制反转,是一种设计思想。传统的程序方式中,我们需要创建一个对象时,都是直接new的。而Ioc不需要我们手动去new创建一个对象,将对象的控制权转移给Ioc容器,由Ioc容器来负责控制对象的生命周期(比如创建、销毁)和对象间的依赖关系。

  • 依赖注入(Dl)

Dl全称Dependency Injection,即依赖注入, IoC 的一个重点就是在程序运行时,动态的向某个对象提供它所需要的其他对象,这一点是通过DI(Dependency Injection,依赖注入)来实现的,即应用程序在运行时依赖 IoC 容器来动态注入对象所需要的外部依赖。而 Spring 的 DI 具体就是通过反射实现注入的,反射允许程序在运行的时候动态的生成对象、执行对象的方法、改变对象的属性。

  • 依赖注入的实现方式

1、属性注入:通过setter方法注入,指Spring通过调用无参构造器或无参静态工厂方法实例化Bean的对象之后,再通过调用Bean的setter方法实现依赖注入。

2、构造注入:通过构造方法注入,值Spring通过调用带参数的构造方法实现依赖注入,每个参数代表着一个依赖。

3、接口注入(抛弃)

三、Spring Bean的实例化方式
  • 构造器实例化
    Spring通过调用Bean的默认无参构造方法来实例化Bean。

  • 静态工厂方法实例化
    在这里插入图片描述
    在这里插入图片描述

  • 实例工厂方式实例化
    在这里插入图片描述
    在这里插入图片描述

四、Spring Bean的作用域
  • singleton(单例)
    使用singleton定义的Bean在Spring中只有一个实例,无论有多个Bean引用它,始终指向同一个对象。这也是Spring默认的作用域。

  • prototype(原型)
    每次通过Spring容器获取prototype定义的Bean时,容器都会新建一个新的Bean实例。

  • request
    在一次HTTP请求中,容器会返回该Bean的同一个实例,不同的HTTP请求则会返回一个新的Bean,该Bean仅在HTTP Request内有效。

  • session
    在一次HTTP Session中,容器会返回该Bean的同一个实例不同的HTTP请求则会返回一个新的Bean,该Bean仅在HTTP Session内有效。

  • globalSession
    在一个全局的HTTP Session中,容器会返回该Bean的同一个实例。仅在使用portlet上下文时有效。

  • application
    为每个ServletContext对象创建一个实例,仅在Web相关的ApplicationContext中生效。

  • Websocket
    为每个Websocket对象创建一个实例,仅在Web相关的ApplicationContext中生效。

五、Spring Bean的生命周期

简单说:实例化 Instantiation --> 属性赋值 Populate --> 初始化 Initialization --> 销毁 Destruction

在这里插入图片描述

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OpenYuan开袁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值