申明:本资源收集于互联网,仅供参考,文中如存在错误,欢迎交流指正
框架部分
-
-
-
-
- 申明:本资源收集于互联网,仅供参考,文中如存在错误,欢迎交流指正
-
- 1、IOC 的概念
- 2、注入的三种方式
- 3、MyBatis 的缓存机制
- 4、解释 Spring 支持的几种 bean 的作用域
- 5、在 Spring 中如何注入一个 java 集合
- 6、Spring 中通知的类型
- 7、对象关系映射(ObjectRelationalMapping,简称 ORM)
- 8、MyBatis 与 Hibernate 有什么不同?
- 9、简述 MyBatis 框架
- 10、Spring 中用到的设计模式
- 11、什么是 bean 自动装配?
- 12、解释自动装配的各种模式?
- 13、Spring 的传播特性
- 14、Spring 事务的隔离级别
- 15、什么是重量级?什么是轻量级?
- 16、什么是 SpringMVC?简单介绍下你对 springMVC 的理解?
- 17、SpringMVC 的流程?
- 18、Springmvc 的优点
- 19、SpringMVC 的主要组件?
- 20、SpringMVC 怎么样设定重定向和转发的?
- 21、SpringMvc 怎么和 AJAX 相互调用的?
- 22、如何解决 POST 请求中文乱码问题,GET 的又如何处理呢?
- 23、Mybatis 中#{}和${}的区别是什么?
- 24、Mybatis 是如何进行分页的?分页插件的原理是什么?
- 25、Mybatis 是如何将 sql 执行结果封装为目标对象并返回的?都有哪些映射形式?
- 26、Xml 映射文件中,除了常见的 select|insert|update|delete 标签之外,还有哪些标签?
- 27、简述 Mybatis 的插件运行原理,以及如何编写一个插件
- 28、简述 Mybatis 的 Xml 映射文件和 Mybatis 内部数据结构之间的映射关系?
- 29、Spring 是什么?
- 30、Spring 的优点?
- 31、Spring 的 AOP 理解
- 32、Spring 的 IoC 理解:
- 33、解释 Spring 支持的几种 bean 的作用域。
- 34、Spring 框架中的单例 Beans 是线程安全的么?
- 35、Spring 中 bean 的加载过程
-
-
-
1、IOC 的概念
控制反转(InversionofControl,英文缩写为 IOC)是一个重要的面向对象编程的法则来消减计算机程序的偶和问题,也是轻量级的 Spring 框架的核心。控制反转一般分为两种类型,依赖注入和依赖查找。依赖注入应用比较广泛
2、注入的三种方式
- (1)接口注入
- (2)set 注入调用对象的 set 方法给属性赋值,调用的是无参数的构造方法创建对象。
- (3)构造注入Spring 容器调用指定的构造方法,给对象属性赋值。
3、MyBatis 的缓存机制
提供了一级缓存和二级缓存
- 一级缓存:基于 PerpetualCache 的 HashMap 本地缓存,其存储作用域为 Session,当 Sessionflush 或 close 之后,该 Session 中的所有 Cache 就将清空。
- 二级缓存与一级缓存及至相同,默认也是采用 PerpetualCache,HashMap 存储,不同在于其存储作用域为
Mapper(Namespace),并且可定义第三方存储源,如 Ehcache 框架等。 - 对于缓存数据更新机制,当某一个作用域(一级缓存 Session/二级缓存 Namespace)进行了 C/U/D 操作后,默认该作用域下所有 select 中的缓存将被 clear。
- MyBatis中一级缓存是默认开启的,即在查询中(一次SqlSession中)。只要当 SqlSession 不关闭,那么你的操作会默认存储使用一级缓存。
4、解释 Spring 支持的几种 bean 的作用域
Spring 框架支持以下五种 bean 的作用域:
- singleton:bean 在每个 Springioc 容器中只有一个实例。
- prototype:一个 bean 的定义可以有多个实例。
- request:每次 http 请求都会创建一个 bean,该作用域仅在基于 web 的SpringApplicationContext 情形下有效。
- session:在一个 HTTPSession 中,一个 bean 定义对应一个实例。该作用域仅在基于 web SpringApplicationContext 情形下有效。
- global-session:在一个全局的 HTTPSession 中,一个 bean 定义对应一个实例。该作用域仅在基于 web 的 SpringApplicationContext 情形下有效。
缺省的 Springbean 的作用域是 Singleton
5、在 Spring 中如何注入一个 java 集合
Spring 提供以下几种集合的配置元素:
- < list >类型用于注入一列值,允许有相同的值。
- < set>类型用于注入一组值,不允许有相同的值。
- < map>类型用于注入一组键值对,键和值都可以为任意类型。
- < props>类型用于注入一组键值对,键和值都只能为 String 类型。
6、Spring 中通知的类型
通知是个在方法执行前或执行后要做的动作,实际上是程序执行时要通过SpringAOP 框架触发的代码段。
Spring 切面可以应用五种类型的通知:
- before:前置通知,在一个方法执行前被调用。
- after:在方法执行之后调用的通知,无论方法执行是否成功。
- after-returning:仅当方法成功完成后执行的通知。
- after-throwing:在方法抛出异常退出时执行的通知。
- around:在方法执行之前和之后调用的通知。
7、对象关系映射(ObjectRelationalMapping,简称 ORM)
ORM 是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM 是通过使用描述对象和数据库之间映射的元数据,将 java 程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。
WhyORM?面向对象的开发方法是当今企业级应用开发环境中的主流开发方法。常见的 ORM 框架有:Hibernate,MyBatis 等
8、MyBatis 与 Hibernate 有什么不同?
相同点:
- 屏蔽 jdbcapi 的底层访问细节,使用我们不用与 jdbcapi 打交道,就可以访问数据。
- jdbcapi 编程流程固定,还将 sql 语句与 java 代码混杂在了一起,经常需要拼凑 sql 语句,细节很繁琐。
Mybatis 的好处:
-屏蔽 jdbcapi 的底层访问细节;将 sql 语句与 java 代码进行分离;提供了将结果集自动封装称为实体对象和对象的集合的功能,queryForList 返回对象集合,用 queryForObject 返回单个对象;提供了自动将实体对象的属性传递给 sql 语句的参数。
Hibernate 是一个全自动的 orm 映射工具,它可以自动生成 sql 语句,Mybatis 需要我们自己在 xml 配置文件中写 sql 语句,hibernate 要比 Mybatis 功能负责和强大很多。因为 hibernate 自动生成 sql 语句,我们无法控制该语句,我们就无法去写特定的高效率的 sql。对于一些不太复杂的 sql 查询,hibernate 可以很好帮我们完成,但是,对于特别复杂的查询,hibernate 就很难适应了,这时候用 Mybatis 就是不错的选择,因为 ibatis 还是由我们自己写 sql 语句。
9、简述 MyBatis 框架
Mybatis 和 Hibernate 一样,是一款开源的 ORM 框架的技术。
Mybatis 的机制原理:
①Mybatis 支持普通的 SQL 查询、存储过程和高级映射的持久层框架。
②Mybatis将大量的SQL语句从程序里面剖离出来,配置在配置文件中,实现 SQL 的灵活配置。
10、Spring 中用到的设计模式
- 工厂模式:IOC 容器
- 代理模式:AOP
- 策略模式:在 spring 采取动态代理时,根据代理的类有无实现接口有JDK 和 CGLIB 两种代理方式,就是采用策略模式实现的
- 单例模式:默认情况下 spring 中的 bean 只存在一个实例
11、什么是 bean 自动装配?
Spring 容器可以自动配置相互协作 beans 之间的关联关系。这意味着 Spring 可以自动配置一个 bean 和其他协作 bean 之间的关系,通过检查BeanFactory 的内容里没有使用和< property >元素。
12、解释自动装配的各种模式?
自动装配提供五种不同的模式供Spring容器用来自动装配beans之间的依赖注入:
- no:默认的方式是不进行自动装配,通过手工设置 ref 属性来进行装配 bean。
- byName:通过参数名自动装配,Spring 容器查找 beans 的属性,这些 beans 在 XML 配置文件中被设置byName。之后容器试图匹配、装配和该 bean 的属性具有相同名字的 bean。
- byType:通过参数的数据类型自动自动装配,Spring 容器查找 beans 的属性,这些 beans 在 XML 配置文件中被设置为 byType。之后容器试图匹配和装配和该 bean 的属性类型一样的 bean。如果有多个 bean 符合条件,则抛出错误。
- constructor:这个同 byType 类似,不过是应用于构造函数的参数。如果在 BeanFactory 中不是恰好有一个 bean 与构造函数参数相同类型,则抛出一个严重的错误。
- autodetect:如果有默认的构造方法,通过 construct 的方式自动装配,否则使用 byType 的方式自动装配。
13、Spring 的传播特性
- 1.PROPAGATION_REQUIRED(propagation_required):如果存在一个事务,则支持当前
事务。如