面试题--14

1.Spring的IoC理解:
2.Spring的AOP理解:
3.BeanFactory和ApplicationContext有什么区别?
4.Spring通知(Advice)有哪些类型?
5. Spring中bean的作用域:

1.Spring的IoC理解:

(1)什么是IOC
IOC,Inversion of Control,控制反转,指将对象的控制权转移给Spring框架,由 Spring 来负责控制对象的生命周期(比如创建、销毁 和对象间的依赖关系。

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

(3)IoC的原理
Spring 的 IoC 的实现原理就是工厂模式加反射机制。

2.Spring的AOP理解:

OOP面向对象,允许开发者定义纵向的关系,但并不适用于定义横向的关系,
会导致大量代码的重复,而不利于各个模块的重用。

AOP,一般称为面向切面,作为面向对象的一种补充,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,提高系统的可维护性。可用于权限认证、日志、事务处理。

3.BeanFactory和ApplicationContext有什么区别?

BeanFactory和ApplicationContext是Spring的两大核心接口,都
可以当做Spring的容器。

(1)BeanFactory是Spring里面最底层的接口,是IoC的核心,定义了IoC的基本功能,ApplicationContext接口作为BeanFactory的子类,除了提供BeanFactory所具有的功能外,还提供了更完整的框架功能。

(2)BeanFactroy采用的是延迟加载形式来注入Bean的,只有在使用到某个Bean时(调用getBean()),才对该Bean进行加载实例化。ApplicationContext,它是在容器启动时,一次性创建了所有的Bean。

(3)BeanFactory通常以编程的方式创建,ApplicationCotext还能以声明的方式创建。

4.Spring通知(Advice)有哪些类型?

(1)前置通知(Before Advice):在连接点(Join point)之前执 行的通知。

(2)后置通知(After Advice):当连接点退出的时候执行的通知(不 论是正常返回还是异常退出)。

(3)环绕通知(Around Advice):包围一个连接点的通知,这是最强 大的一种通知类型。 环绕通知可以在方法调用前后完成自定义的行为。它也可以选择是否继续执行连接点或直接返回它们自己的返回值或抛出异常来 结束执行。

(4)返回后通知(AfterReturning Advice):在连接点正常完成后 执行的通知(如果连接点抛出异常,则不执行)

(5)抛出异常后通知(AfterThrowing advice):在方法抛出异常退 出时执行的通知

5. Spring中bean的作用域:

(1)singleton:默认作用域,单例bean,每个容器中只有一个bean的 实例。

(2)prototype:为每一个bean请求创建一个实例。

(3)request:为每一个request请求创建一个实例,在请求完成以后, bean会失效并被垃圾回收器回收。

(4)session:与request范围类似,同一个session会话共享一个实 例,不同会话使用不同的实例。

(5)global-session:全局作用域,所有会话共享一个实例。如果想要声明让所有会话共享的存储变量的话,那么这全局变量需要存储在globalsession中。

你可能感兴趣的:(面试题,spring,java,spring,boot)