ToB企服应用市场:ToB评测及商务社交产业平台

标题: 面试必会 --> SSM篇 [打印本页]

作者: 勿忘初心做自己    时间: 2024-6-6 19:23
标题: 面试必会 --> SSM篇
01-什么是Spring IOC 和DI ?

IOC : 控制翻转 , 它把传统上由程序代码直接操控的对象的调用权交给容 器,通过容器来实现对
象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转 移,从程序代码本身
转移到了外部容器。
DI : 依赖注入,在我们创建对象的过程中,把对象依赖的属性注入到我们的类中。
02-有哪些不同类型的依赖注入实现方式?

依赖注入分为接口注入Setter方 法注入和构造器注入以及注解注入
03- Spring支持的几种bean的作用域 Scope

Spring框架支持以下五种bean的作用域:
04- Spring框架中的单例bean是线程安全的吗?

不是,Spring框架中的单例bean不是线程安全的 , spring 中的 bean 默认是单例模式,spring 框架并没有对单例 bean 进行多线程的封装处理。
但是我们一般在使用单例Bean的时候, 不会设置共享数据, 所以也就不会存在线程安全问题 ! 从这个角度讲单例bean也是线程安全的
05- spring 自动装配 bean 有哪些方式?

在Spring框架xml设置中共有5种自动装配:
09- JDK动态代理和CGLIB动态代理的区别

Spring AOP中的动态代理主要有两种方式,JDK动态代理和CGLIB动态代理:
10- 什么是AOP , 你们项目中有没有使用到AOP

AOP一般称为面向切面编程,作为面向对象的一种增补,用于 将那些与业务无关,但却对多个
对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模 块,这个模块被命名为“切面”
(Aspect),淘汰系统中的重复代码,降低了模块间的耦合度,同时 进步了系统的可维护性。
在我们的项目中我们自己写AOP的场景其实很少 , 但是我们使用的许多框架的功能底层都是AOP
, 例如 : 权限认证、日志、事务处理等
11- SpringMVC的执行流程知道嘛


12- Spring MVC常用的注解有哪些?

@RequestMapping:用于处理哀求 url 映射的注解,可用于类或方法上。用于类上,则表示类中 的全部相应哀求的
方法都是以该地点作为父路径。
@RequestBody:注解实现接收http哀求的json数据,将json转换为java对象。
@ResponseBody:注解实现将conreoller方法返回对象转化为json对象相应给客户。
@Controller:控制器的注解,表示是表现层,不能用用别的注解取代
@RestController :  组合注解 @Conntroller + @ResponseBody
@GetMapping  , @PostMapping , @PutMapping , @DeleteMapping ...
@PathVariable : 接收哀求路径中的变量
@RequestParam : 接收哀求参数
13- Mybatis #{}和${}的区别

#{}是占位符,预编译处理;${}是拼接符,字符串替换,没有预编译处理。
Mybatis在处理#{}时,#{}传入参数是以字符串传入,会将SQL中的#{}替换为?号,调用 PreparedStatement的set方
法来赋值。
#{} 可以有效的防止SQL注入,进步系统安全性;${} 不能防止SQL 注入
#{} 的变量替换是在数据库系统中; ${} 的变量替换是在数据库系统外
14- Mybatis  怎样获取生成的主键

我知道的有二种方式
15- 当实体类中的属性名和表中的字段名不一样 ,怎么办

第1种: 通过在查询的SQL语句中定义字段名的别名,让字段名的别名和实体类的属性名一致。
第2种: 通过 ResultMap来映射字段名和实体类属性名
16- Mybatis怎样实现多表查询

Mybatis是新多表查询的方式也有二种 :
第一种是 : 编写多表关联查询的SQL语句 , 使用ResultMap建立结果集映射 , 在ResultMap中建立多表结果集映射
的标签有association和collection
  1. <resultMap id="Account_User_Map" type="com.heima.entity.Account">
  2.     <id property="id" column="id"></id>
  3.     <result property="uid" column="uid"></result>
  4.     <result property="money" column="money"></result>
  5.     <association property="user">
  6.         <id property="id" column="uid"></id>
  7.         <result property="username" column="username"></result>
  8.         <result property="birthday" column="birthday"></result>
  9.         <result property="sex" column="sex"></result>
  10.         <result property="address" column="address"></result>
  11.     </association>
  12. </resultMap>
  13. <select id="findByIdWithUser" resultMap="Account_User_Map">
  14.     select  a.*,  username, birthday, sex, address  from account a , user u where a.UID = u.id and a.ID = #{id} ;
  15. </select>
复制代码
第二种是 : 将多表查询分解为多个单表查询, 使用ResultMap表的子标签association和collection标签的
select属性指定另外一条SQL的定义去执行, 然后执行结果会被自动封装
  1. <resultMap id="Account_User_Map" type="com.heima.entity.Account" autoMapping="true">
  2.     <id property="id" column="id"></id>
  3.     <association property="user" select="com.heima.dao.UserDao.findById" column="uid" fetchType="lazy"></association>
  4. </resultMap>
  5. <select id="findByIdWithUser" resultMap="Account_User_Map">
  6.     select * from account where  id = #{id}
  7. </select>
复制代码
17-Mybatis都有哪些动态sql?能简述一下动 态sql的执行原理吗?

Mybatis动态sql可以让我们在Xml映射文件内,以标签的形式编写动态sql,完成逻辑判断和动态 拼接sql的功能,
Mybatis提供了9种动态sql标签 trim|where|set|foreach|if|choose|when|otherwise|bind。
其执行原理为,使用OGNL从sql参数对象中计算表达式的值,根据表达式的值动态拼接sql,以此 来完成动态sql的功
能。
18- Mybatis是否支持延迟加载?

Mybatis仅支持association关联对象和collection关联集合对象的延迟加载,association指的就是 一对一,
collection指的就是一对多查询。在Mybatis设置文件中,可以设置是否启用延迟加载
lazyLoadingEnabled=true|false。
19- 怎样使用Mybatis实现批量插入 ?

使用foreach标签 , 它可以在SQL语句中进行迭代一个集合。foreach标签的属性主 要有item,index,collection,
open,separator,close。
20- Mybatis 批量插入是否能够返回主键

可以, 返回的主键在传入集合的每个对象属性中封装的
21- Mybatis的一级、二级缓存 ?

一级缓存:  基于SqlSession级别的缓存  , 默认开启
二级缓存 : 基于SqlSessionFactory的NameSpace级别缓存 , 默认没有开启, 需要手动开启
  1. # 配置cacheEnabled为true
  2. <settings>...
  3.   
  4.   <setting name="cacheEnabled" value="true"/>
  5.   ...
  6. </settings>
  7. # 在映射配置文件中配置cache相关配置
  8. <cache eviction="FIFO" flushInterval="60000" readOnly="false" size="1024">
  9. </cache>
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4