Java 面试题_框架部分(ssm)

申明:本资源收集于互联网,仅供参考,文中如存在错误,欢迎交流指正

框架部分

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):如果存在一个事务,则支持当前
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值