要么做好要么不做


十、Spring/Spring MVC

90.为什么要使用 spring?

是一个轻量级的企业级项目的开发框架,可以和很多优秀的开源框架做到整合。例如mybatis、springMVC、redis、zookeeper等吧。两大核心就是IOC与IOP,控制反转与面向切面编程。

91.解释一下什么是 aop?

aop面向切面编程,把一些通用代码抽取出来,封装在成一个可重用的模块。下一次需要用这些公共的代码时候直接调用即可。 不改变源代码的情况实现功能增强。例如:事务与日志。主要运用代理模式。

好处:简化代码、易维护、易扩展、减少重复代码。

代理模式

92.解释一下什么是 ioc?

程序中我们手动去创建对象的控制权,移交给spring ioc容器进行管理。底层就是用一个Map进行存储对象的。map可以存放各种对象。

ioc容器就像一个工厂一样,不需要关心对象是怎么创建的,只需要配置好文件或者注解即可。

ioc:控制反转与依赖注入

93.spring 有哪些主要模块?

Spring web(创建web应用支持)、spring core(提供IOc依赖注入功能)、spring Aop(面向切面编程)、spring jdbc(提供数据库连接)springORM 、spring test、spring jms(消息服务)

94.spring 常用的注入方式有哪些?

构造器注入

setter注入

注解注入

95.spring 中的 bean 是线程安全的吗?


不安全的的,因为bean采用单例模式。单例模式就是线程不安全的。

96.spring 支持几种 bean 的作用域?

Spring bean 的作用域是Singleton.


singleton:bean在springioc容器中只有一个实例

prototype:一个bean可以有多个实例。

request:每一次http请求都会创建一个bean,作用域:基于web的Spring ApplicationContext下有效。

session:在一个http session 中 创建一个bean的实例,作用域:基于web的Spring ApplicationContext下有效。

global -session 在一个全局的http session 中 创建一个bean的实例,作用域:基于web的Spring ApplicationContext下有效。

97.spring 自动装配 bean 有哪些方式?

https://www.jb51.net/article/106856.htm

根据属性名称自动配置

根据数据类型自动配置

根据构造方法自动配置

98.spring 事务实现方式有哪些?

1、使用注解:@Transactional()

2、在xml文件中进行配置。

估计写的不是很全

99.说一下 spring 的事务隔离?

读已提交、读未提交、可重复读、串行化

读未提交会出现 脏读、幻读、不可重复读

读未提交:不会出现脏读,其他的会出现

可重复都:只会出现幻读

串行化:都不会出现

100.说一下 spring mvc 运行流程?

用户发送请求---到前端控制器---handleMapping处理器映射器---把请求的处理对象返回给前端控制器----controller层 ---返回对于的modleandview视图----到前端控制器---解析试图----将视图返回给前端控制器----渲染视图--返回给用户

101.spring mvc 有哪些组件?


前端控制器、处理器映射器、视图解析器、拦截器等

102.@RequestMapping 的作用是什么?

用来表示一个http的请求地址,映射到controller的方法。

可作用与类和方法上,

103.@Autowired 的作用是什么?

联想依赖注入的方式:

@Autowitred 是一个注解,可以标注在类、成员变量、构造方法上。可以省去那些构造器注入、等set注入。

按类型进行去匹配