文章插图
大家好,我是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 方式实现动态代理 。
单例模式:Bean默认为单例模式 。
代理模式:Spring的AOP功能用到了JDK的动态代理和CGLIB字节码生成技术;
模板方法:用来解决代码重复的问题 。比如. RestTemplate, JmsTemplate, JpaTemplate 。
观察者模式:定义对象键一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知被制动更新,如Spring中listener的实现ApplicationListener 。
Spring 的常用注解?@Required:该注解应用于设值方法@Autowired:该注解应用于有值设值方法、非设值方法、构造方法和变量 。@Qualifier:该注解和@Autowired 搭配使用,用于消除特定 bean 自动装配的歧义
Spring bean 的生命周期?
- bean 定义:在配置文件里面用<bean></bean>来进行定义 。
- bean 初始化:有两种方式初始化:
- bean 调用:有三种方式可以得到 bean 实例,并进行调用
- bean 销毁:销毁有两种方式
Spring 管理事务的方式?
- 编程式事务,在代码中硬编码 。
- 声明式事务,在配置文件中配置
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:一个事务在执行的过程中完全看不到其他事务对数据库所做的更新 。
推荐阅读
- 什么是Java可变参数列表?怎么和重载机制配合使用?
- Java安全编码之sql注入
- 异步文件通道Java NIO你需要了解多少,来看看这篇文章
- Java开源框架之SpringMVC原理及源码解析
- 破解 Java Agent 探针黑科技
- 内含95个工具函数 前端大佬都在使用的JavaScript工具函数宝典
- go语言137道面试题整理汇总
- Java分布式项目,你使用的哪种注册中心?为啥?
- Java中的“协程”
- JAVA并发-ScheduledExecutorService