SSM相关总结

什么是Spring MVC?简单介绍下你对Spring MVC的理解?
基于mvc架构中的web框架,将web层进行解耦,绑定参数、调用service、响应结果

Spring MVC的优点
支持各种视图技术,不仅仅只是jsp;与spring框架集成;清晰的角色分配

组件
Spring MVC的主要组件?
dispatcherservlet、handlerMapping、HandlerAdapter、Handler(开发)、ViewResolver、View(开发)

什么是DispatcherServlet
springMvc围绕DispatcherServlet进行设计的,用来分发和响应请求

Spring MVC的控制器是不是单例模式,如果是,有什么问题,怎么解决?
是单例的,如果处理同一个变量,会造成数据不一致。不在控制器里面写变量

工作原理
请描述Spring MVC的工作流程?描述一下 DispatcherServlet 的工作流程?
用户发起请求,先到dispatchservlet,进行分发到handlerMapping进行映射响应(处理器对象和处理器拦截器)给dispatservlet,在调用handlerAdapter适配到对应的处理器返回ModelAndView;再到ViewResovler进行视图解析最后将渲染视图返回给用户

常用注解
注解原理是什么

Spring MVC常用的注解有哪些?
@Controller、@RequestMapping、@responseBody、@requestBody、@pathVariable、@requestparam
SpingMvc中的控制器的注解一般用哪个,有没有别的注解可以替代?
@restController=@Controller、@responseBody

@Controller注解的作用:定义了控制器类
@RequestMapping注解的作用:
@ResponseBody注解的作用
@PathVariable和@RequestParam的区别
其他
Spring MVC的异常处理?
如果在拦截请求中,我想拦截get方式提交的方法,怎么配置
Spring MVC里面拦截器是怎么写的

什么是spring?
spring春天,为了简化javaweb企业级开发,提供一个轻量级框架。IOC、Aop

Spring的优缺点是什么?
缺点:依赖反射,影响性能;有一定的入门门槛;轻量级框架但是给人感觉大而全。

Spring由哪些模块组成?
Data、web
Aop、aspect
beans(对Bean的创建、管理、配置以及包含进行IOC/DI需要的类。)、core(Core组件是Spring所有组件的核心)、context(它使Spring成为一个容器。)
test
Beans组件和Context组件是实现IOC和DI的基础

Spring 框架中都用到了哪些设计模式?
工厂(beanFactory)、单例(bean就是默认单例)、代理(Aop)、模板(jdbcTemplate)

什么是Spring IOC 容器?
控制反转,由IOC来管理对象,实现是靠DI依赖注入

控制反转(IoC)有什么作用
IOC的优点是什么?

Spring IoC 的实现机制
工厂模式+反射

BeanFactory 和 ApplicationContext有什么区别?
beanFactory:懒加载
ApplicationContext:一次性加载

Spring 如何设计容器的,BeanFactory和ApplicationContext的关系详解(它们都是容器)
core模块:beanFactory就是一个map,key是beanName,value是Bean的实例。是个低级容器
context模块:ApplicationContext是继承了beanFactory,其中还继承了其它接口,包含了多个方法,是个高级容器

ApplicationContext通常的实现是什么?
ClassPathXmlApplicationContext、WebXmlApplicationContext、FileSystemXmlApplicationContext

构造器依赖注入和 Setter方法注入的区别
构造器依赖注入:调用有参构造方法
Setter方法注入:调用无参,然后调用set方法

什么是Spring beans?
spring beans是java对象, 通过容器中配置的元数据进行创建(但java对象不一定是一个bean)

如何给Spring 容器提供配置元数据?Spring有几种配置方式
xml配置、注解配置、基于java配置

Spring基于xml注入bean的几种方式
set注入、构造器注入、静态工厂、实例工厂

解释Spring支持的几种bean的作用域
singleton(默认)、prototype、request、session、

Spring框架中的单例bean是线程安全的吗?
单例的不安全。当bean有状态时(可以保存数据),多个线程一起操作会存在安全问题(Spring提供ThreadLocal解决)

Spring如何处理线程并发问题?
Spring提供ThreadLocal解决,会为每一个线程提供一个独立的变量副本来解决访问冲突

解释Spring框架中bean的生命周期
1、实例化
2、赋值、调用BeanNameAware方法setBeanName、BeanFactoryAware方法setBeanFactory、ApplicationContextAware的setApplicationContext方法
3、BeanPostProcess的预初始化方法、InitializingBean的afterPropertiesSet方法、自定义初始化、BeanpostProcess的初始化后方法
(初始化后可以使用)
4、销毁

哪些是重要的bean生命周期方法? 你能重载它们吗?
bean 标签有两个重要的属性(init-method和destroy-method

什么是bean的自动装配?
不需要配置容器,spring能自动装配bean之间的依赖

解释不同方式的自动装配,spring 自动装配 bean 有哪些方式?
no、byName、byType、constructor、autodetect

使用@Autowired注解自动装配的过程是怎样的?
通过byType匹配,有大于两个的实现类话可以和qualifier配合使用,通过byName匹配

自动装配有哪些局限性?
自动装配跟直接装配(explicit wiring)相比较,在准确性方便还是差那么点

怎样开启注解装配?
在Spring配置文件中配置 context:annotation-config/元素。

@Component, @Controller, @Repository, @Service 有何区别?
@Component将 java 类标记为 bean

@Required 注解有什么作用
该属性需要赋值

@Autowired和@Resource之间的区别
@Autowires自动注入,通过Bytype,与@Qualifier配合使用
@Resource通过Byname

Spring支持的事务管理类型, spring 事务实现方式有哪些?
编程式事务、声明式事务
声明式事务管理粒度只能控制到方法,不能像编程式事务控制代码块级别

Spring事务的实现方式和实现原理
本质就是数据库对事务的支持

说一下Spring的事务传播行为
propagation_Required 存在事务就用,不存在事务就创建事务,常用设置
propagation_supports 存在事务就用,不存在就不用
propagation_mandatory 存在事务就用,不存在就抛出异常
propagation_Required_New创建新事务
propagation_not_supports不用事务,如果有则挂起
propagation_never 不用事务,如果有则抛出异常
propagation_nested 存在就嵌套使用事务,没有事务按照required属性执行

说一下 spring 的事务隔离?
未提交读、提交读、可重复读、序列化
脏读、不可重复读、幻读

Spring框架的事务管理有哪些优点?
支持声明式事务、为不同的事务API提供一样的编程模式

什么是AOP
面向切面编程,将一些不影响业务的公共模块提取出来,这些模块就叫切面。比如日志记录、权限认证、事务处理。
减少重复代码、松耦合、提高可维护性

JDK动态代理和CGLIB动态代理的区别
JDK动态代理是针对实现接口的类生成代理
CGLIB动态代理是针对类实现代理

如何理解 Spring 中的代理?
Advice + Target Object = Proxy
通知 + 目标对象=代理

解释一下Spring AOP里面的几个名词
连接点:spring允许通知的地方
切入点:选择特定的连接点
通知:切面的工作
切面:通知+切入点

Spring通知有哪些类型?
环绕通知
前置通知
方法执行
环绕通知
后置通知
返回通知(异常通知)

spring中文春天,是个轻量级框架,未了解决javaweb企业级开发而生,从几个模块来进行一个介绍,
beans模块中的bean是一个对象,但是对象不一定是bean,通过配置的一些元数据进行创建,其中beans模块定义了一些创建管理bean的方法;
core模块是核心模块,是所有组件的核心;context模块是上下文模块,在beans、core模块之上进行了构建,和beans模块一起组成了一个spring比较重要的特性IOC;
AOP模块面向切面编程,也是spring比较重要的特性之一,可以用于日志记录、权限控制、事务等;
Data模块,其中包含了jdbc、jpa、事务等,持久层框架我比较熟悉的是mybatis;Web模块,包含了servlet、web,在Web层我比较熟悉的是SpringMVC

MyBatis是什么?
是一个持久层框架,是一个半ORM框架(对象关系的映射,需要自己手动编写sql)

Mybatis优缺点
优点:提供标签映射、与spring集成、消除了大量代码
缺点:sql语句编写量大、数据库移植性差

MyBatis的解析和运行原理
MyBatis编程步骤是什么样的?
创建sqlsessionFactory、在创建sqlsesion、执行数据库操作、commit、close

请说说MyBatis的工作原理
读取mybatis配置文件、读取mapper.xml文件、创建sqlsessionFactory、创建sqlsession、Executor执行器、MappedStatement对象、数据库

为什么需要预编译
DBMS不需要再次编译sql语句

Mybatis都有哪些Executor执行器?它们之间的区别是什么?
simple、reuse、batch

Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?
支持,底层使用了cglib的动态代理,调用目标方法时,会进入拦截器、发现其值为null时。就会调用关联目标对象的sql,将值查询上来。在接着完成目标方法的调用。

模糊查询like语句该怎么写
#{} 传参时写’’ 、${} 和sql写一起、使用concat函数

在mapper中如何传递多个参数
map、javabean、@param

Mybatis如何执行批量操作
可以使用批量执行器、可以在sql语句写foreach循环

如何获取生成的主键
在map.xml中sql语句当中加属性keyProperty和useGeneratedKeys=‘true’

当实体类中的属性名和表中的字段名不一样 ,怎么办
使用别名、使用

什么是MyBatis的接口绑定?有哪些实现方式?
注解、xml中namespace

最佳实践中,通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗
工作原理是jdk的动态代理、不能重载

Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式?
别名、resultMap

Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签?
resultMap、parameterMap、sql、include
动态sql:foreach、if、trim、choose、when、otherwise

Mybatis是否可以映射Enum枚举类?
自定义TypeHandler

Mybatis动态sql是做什么的?都有哪些动态sql?能简述一下动态sql的执行原理不?
以标签的形式编写动态sql

Mybatis是如何进行分页的?分页插件的原理是什么?
用PageHelper插件,拦截修改sql

简述Mybatis的插件运行原理,以及如何编写一个插件。
代理,实现Interceptor 接口并声明拦截哪些方法,然后在到xml里面进行配置

Mybatis的一级、二级缓存
一级是session级别、二级是map级别的(默认关闭的)。当执行了cud时,缓存会清空

resultMap

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值