乐趣区

关于java:031期JavaEE面试题三Spring1

开篇介绍

大家好,我是 Java 最全面试题库 的提裤姐,明天这篇是 JavaEE 面试题系列的第三篇,次要总结了 Spring 相干的问题,这篇是第一篇,在后续,会沿着第一篇开篇的常识线路始终总结上来,做到日更!如果我能做到百日百更,心愿你也能够跟着百日百刷,一百天养成一个好习惯。

谈谈你对 Spring 的了解?

Spring 是一个开源框架,为简化企业级利用开发而生。Spring 能够是使简略的 JavaBean 实现以前只有 EJB 能力实现的性能。Spring 是一个 IOC 和 AOP 容器框架。
Spring 容器的次要外围是:

  • 管制反转(IOC),传统的 java 开发模式中,当须要一个对象时,咱们会本人应用 new 或者 getInstance 等间接或者间接调用构造方法创立一个对象。而在 spring 开发模式中,spring 容器应用了工厂模式为咱们创立了所须要的对象,不须要咱们本人创立了,间接调用 spring 提供的对象就能够了,这是管制反转的思维。
  • 依赖注入(DI),spring 应用 javaBean 对象的 set 办法或者带参数的构造方法为咱们在创立所需对象时将其属性主动设置所须要的值的过程,就是依赖注入的思维。
  • 面向切面编程(AOP),在面向对象编程(oop)思维中,咱们将事物纵向抽成一个个的对象。而在面向切面编程中,咱们将一个个的对象某些相似的方面横向抽成一个切面,对这个切面进行一些如权限管制、事物治理,记录日志等。专用操作解决的过程就是面向切面编程的思维。AOP 底层是动静代理,如果是接口采纳 JDK 动静代理,如果是类采纳 CGLIB 形式实现动静代理。

Spring 中的设计模式有哪些?

工厂模式:
BeanFactory 就是简略工厂模式的体现,用来创建对象的实例;

单例模式:
Bean 默认为单例模式。

代理模式:
Spring 的 AOP 性能用到了 JDK 的动静代理和 CGLIB 字节码生成技术;

模板办法:
用来解决代码反复的问题。比方. RestTemplate, JmsTemplate, JpaTemplate。

观察者模式:
定义对象键一种一对多的依赖关系,当一个对象的状态产生扭转时,所有依赖于它的对象都会失去告诉被制动更新,如 Spring 中 listener 的实现 ApplicationListener。

Spring 的罕用注解?

@Required: 该注解利用于设值办法
@Autowired:该注解利用于有值设值办法、非设值办法、构造方法和变量。
@Qualifier:该注解和 @Autowired 搭配应用,用于打消特定 bean 主动拆卸的歧义

Spring bean 的生命周期?

  • bean 定义:在配置文件外面用 <bean></bean> 来进行定义。
  • bean 初始化:有两种形式初始化:

①在配置文件中通过指定 init-method 属性来实现
②实现 org.springframwork.beans.factory.InitializingBean 接口

  • bean 调用:有三种形式能够失去 bean 实例,并进行调用
  • bean 销毁:销毁有两种形式

①应用配置文件指定的 destroy-method 属性
②实现 org.springframwork.bean.factory.DisposeableBean 接口

Spring 治理事务的形式?

  • 编程式事务,在代码中硬编码。
  • 申明式事务,在配置文件中配置

申明式事务又分为:
①基于 XML 的申明式事务
②基于注解的申明式事务

Spring 的事务流传行为有哪些?

1、PROPAGATION_REQUIRED:如果以后没有事务,就创立一个新事务,如果以后存在事务,就退出该事务,该设置是最罕用的设置。
2、PROPAGATION_SUPPORTS:反对以后事务,如果以后存在事务,就退出该事务,如果以后不存在事务,就以非事务执行。
3、PROPAGATION_MANDATORY:反对以后事务,如果以后存在事务,就退出该事务,如果以后不存在事务,就抛出异样。
4、PROPAGATION_REQUIRES_NEW:创立新事务,无论以后存不存在事务,都创立新事务。
5、PROPAGATION_NOT_SUPPORTED:以非事务形式执行操作,如果以后存在事务,就把以后事务挂起。
6、PROPAGATION_NEVER:以非事务形式执行,如果以后存在事务,则抛出异样。
7、PROPAGATION_NESTED:如果以后存在事务,则在嵌套事务内执行。如果以后没有事务,则按 REQUIRED 属性执行。

Spring 事务的隔离级别?

1、ISOLATION_DEFAULT:这是个 PlatfromTransactionManager 默认的隔离级别,应用数据库默认的事务隔离级别。
2、ISOLATION_READ_UNCOMMITTED:读未提交,容许另外一个事务能够看到这个事务未提交的数据。
3、ISOLATION_READ_COMMITTED:读已提交,保障一个事务批改的数据提交后能力被另一事务读取,而且能看到该事务对已有记录的更新。
4、ISOLATION_REPEATABLE_READ:可反复读,保障一个事务批改的数据提交后能力被另一事务读取,然而不能看到该事务对已有记录的更新。
5、ISOLATION_SERIALIZABLE:一个事务在执行的过程中齐全看不到其余事务对数据库所做的更新。

Spring 的告诉是什么?有哪几种类型?

告诉是个在办法执行前或执行后要做的动作,实际上是程序执行时要通过 SpringAOP 框架触发的代码段。
Spring 切面能够利用五种类型的告诉:

  • before:前置告诉,在一个办法执行前被调用。
  • after: 在办法执行之后调用的告诉,无论办法执行是否胜利。
  • after-returning: 仅当办法胜利实现后执行的告诉。
  • after-throwing: 在办法抛出异样退出时执行的告诉。
  • around: 在办法执行之前和之后调用的告诉。
退出移动版