Java教程

【Java面试题】Spring

本文主要是介绍【Java面试题】Spring,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

八、Spring

57)什么是 Spring 的依赖注入

IOC( Inversion of Control )的⼀个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。

其中依赖注入(DI Dependency Injection)是实现IOC的一种方式。

a.接口注入

b.setter方法注入

c.构造方法注入

d.注解方式注入

平常我们 new 一个实例,这个实例的控制权是我们程序员,而控制反转是指 new 实例工作不由我们程序员来做而是交给 spring 容器来做。

58)Spring 中的设计模式

a. 单例模式——spring 中两种代理方式,若目标对象实现了若干接口, spring 使用 jdk 的java.lang.reflect.Proxy-Java 类代理。若目标兑现没有实现任何接口,spring 使用 CGLIB 库生成目标类的子类。单例模式——在 spring 的配置文件中设置 bean 默认为单例模式。
b. 模板方式模式——用来解决代码重复的问题。比如:RestTemplate、JmsTemplate、JpaTemplate
c. 前端控制器模式——spring 提供了前端控制器 DispatherServlet 来对请求进行分发。
d. 试图帮助(viewhelper)——spring 提供了一系列的 JSP 标签,高效宏来帮助将分散的代码整合在试图中。
e. 依赖注入——贯穿于 BeanFactory/ApplacationContext 接口的核心理念
f. 工厂模式——在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用同一个接口来指向新创建的对象。Spring 中使用 beanFactory 来创建对象的实例。

59)怎样开启注解装配?

注解装配在默认情况下是不开启的,为了使用注解装配,我们必须在 Spring 配置文件中配置context:annotation-config/元素。

60)Spring 的常用注解

@Required:该注解应用于设值方法
@Autowired:该注解应用于有值设值方法、非设值方法、构造方法和变量。
@Qualifier:该注解和@Autowired 搭配使用,用于消除特定 bean 自动装配的歧义。

61)简单解释一下 Spring 的 AOP

AOP ( AspectOrientedProgramming ),即 面 向 切 面 编 程 , 可 以 说 是 OOP(ObjectOrientedProgramming,面向对象编程)的补充和完善。

OOP 引入封装、继承、多态等概念来建立一种对象层次结构,用于模拟公共行为的一个集合。不过 OOP 允许开发者定义纵向的关系,但并不适合定义横向的关系,例如日志功能。

在 OOP 设计中,它导致了大量代码的重复,而不利于各个模块的重用。AOP 技术恰恰相反,它利用一种称为"横切" 的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为"Aspect",即切面。所谓"切面",简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。

62)Spring 的通知是什么?有哪几种类型?

通知是个在方法执行前或执行后要做的动作,实际上是程序执行时要通过 SpringAOP 框架触发的代码段。Spring 切面可以应用五种类型的通知:
1)before:前置通知,在一个方法执行前被调用。
2)after:在方法执行之后调用的通知,无论方法执行是否成功。
3)after-returning:仅当方法成功完成后执行的通知。
4)after-throwing:在方法抛出异常退出时执行的通知。
5)around:在方法执行之前和之后调用的通知。

这篇关于【Java面试题】Spring的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!