SSM框架必看

小凯   |     |   框架   |   21分钟   |   453浏览  

通用篇

1、什么是SSM、SSH、Spring全家桶?

SSM = Spring + SpringMVC + Mybatis
SSH = Spring + SpringMVC + Hibernate
Spring全家桶:脚手架SpringBoot、微服务SpringCloud、其他Spring扩展技术。

2、使用拦截器和使用自定义注解实现日志有什么的区别?为什么更倾向于自定义注解?

使用拦截器方式:将拦截器注册于IoC中,在SpringMVC执行流程中执行,固定的三个节点执行拦截操作:。
使用自定义注解:定义注解为切点,对切点编写增强方法,可以在切点前、中、后以及出异常时进行配置。
相比两种实现方式,使用自定义注解方式实现日志更加灵活,可以自定义@注解作用于哪些方法。拦截器方式需要配置拦截规则,相较麻烦

Spring篇

1、什么是spring?

Spring是一种为了简化开发的的框架,相对于以前没有使用Spring,各种配置相当繁琐(简化开发)。
spring的生态很广,使用spring可以更高效的整合其他spring产品(框架整合)。

2、spring的核心是什么?

spring的核心为IoC和AoP。
IoC指的是IoC容器,特点包括控制反转依赖注入DI
AoP指的是面向切面编程思想。

3、说一说IoC?如何实现的(高级)?

IoC一般来说是指IoC容器。它包含有控制反转(IoC)和依赖注入(DI)两大特征。
控制反转:将对象的创建权力交给外部(IoC容器)。
直接点就是把平时new的代码改成了IoC容器管理。
依赖注入:IoC容器中使用bean对象需要先注入,对象中内嵌了其他对象时会把内嵌的对象注入当前对象。
直接点就是A->B->C层级的对象依次注入的过程。

4、说一说AoP?如何实现的(高级)?

spring中AoP是一种面向切面编程的思想实现。作用表现为在spring框架中运行时动态的进行切面增强。

5、SpringBean的生命周期?
6、循环依赖是什么?如何解决?

循环依赖:在依赖注入DI中的一种情况, A->B, B->A。两个或多个bean中相互依赖的问题,出现死循环,导致栈溢出。
解决:
1、重新考虑设计类依赖关系;
2、通过autowire注入的属性可以使用注解Lazy懒加载解决;
3、通过构造器方式注入类属性。

7、如何告诉IoC哪些对象需要交给容器管理?

1、通过配置bean.xml方式
2、通过@bean``@component``@controller``@service``respository注解

8、如何获取IoC中的bean对象?

1、通过bean工厂获取
ApplicationContext context;
context = new ClassPathXmlApplicationContext("applicationContext.xml");
context.getBean("beanName", Bean.class);
2、使用@autowire注解

SpringMVC篇

1、什么是SpringMVC?

SpringMVC是Spring框架的一个模块,是基于MVC(模型-视图-控制器)设计模式的一种web框架。
模型(Model): 应用服务中的数据和业务逻辑。可以是VO层对象也可以是dao层实体类。
视图(View): 负责将模型(Model)中的数据渲染到模板文件中(html),一般来说实现此功能需要JSP、thymeleaf模板引擎的支撑。
控制器(Controller): 将用户的请求转发到相应处理方法,执行相应的业务逻辑,得到数据模型(model),传递到相应的视图(view)中进行渲染,渲染完成后向用户返回响应页面。

2、SpringMVC的执行流程?

1、用户发送请求到中央处理器(DispatcherServlet), 中央处理器负责整个过程调度;
2、中央处理器根据请求路径请求HandlerMapping(执行映射器),返回相应的处理器handler和拦截器;
3、中央处理器请求HandlerAdpapter(处理适配器), 返回视图模型ModelAndView;
4、中央处理器将ModelAndView请求ViewResolver视图解析器,找到具体的视图页面(比如thymeleaf模板,也就是view)后返回;
5、中央处理器拿到view后,将model填充到view,生成最终响应的页面,返回给用户。

3、拦截器会在SpringMVC执行流程中的哪一步执行?

拦截器在MVC流程中有三个节点执行:
1、中央控制器请求HandlerMapping后返回handler和拦截器时;
2、中央处理器请求视图解析器后,返回视图前;
3、渲染视图后(返回最终页面前)。

4、RestController和controller的区别?

直观上来说,restcontroller = response + controller。用于给用户请求返回数据内容;单独的controller用户给用户返回页面。
response注解的作用是将controller处理完后的数据,不用经过视图解析器,直接把结果作为页面响应给用户。

Mybatis(plus)篇

1、说一说mybatis三级缓存分别缓存的什么?

一级缓存(本地缓存):
作用域为单个sqlsession。缓存了同一个sqlsession中的sql执行结果集和映射。sqlsession中多次相同条件的查询只会查询一次,同sqlsession中后面的相同查询会使用缓存。
mybatis默认开启一级缓存。


二级缓存(全局缓存):
作用域为mapper级别。在多个sqlsession中共享数据。多个sqlsession中执行相同条件的查询会被缓存,第一次从数据库查询,后面从缓存中查询。因为作用域是多个sqlsession共享(多次业务操作内共享),因此可以理解为全局缓存
mybatis默认关闭二级缓存。


三级缓存(分布式缓存):
将二级缓存的内容共享到分布式环境中。一般实现为集成redis、memcached。
mybatis默认关闭三级缓存。

2、mybatis拦截器的作用。

mybatis拦截器是定义在mybatis框架中使用的拦截器,定义了执行sql前后进行操作的模板方法。可以根据业务情况定制拦截器。默认mybatis提供了一些拦截器,比如乐观锁、分页查询等等。

SpringBoot篇

1、什么是SpringBoot?优点?

SpringBoot是作为Spring框架基础上更加简便使用的框架。主要优点有:
1、极大的简化Spring配置;
2、自动装配

2、SpringBoot常用注解和作用?
注解 作用
RequestParam 标注请求参数
PathVariable 标注restful风格参数
RestController 相当于Response + controller,表示不经过视图解析器,直接作为结果响应数据
Controller 标注这是控制器handler方法类
Component 标识springbean(实体类或其他)
Service 标识springbean(服务层)
Mapper 标识springbean(dao层)
AutoWire 注入springbean在当前类
Scheduled 定时任务,支持corn表达式
3、SpringBoot中配置文件的读取顺序?

application.properties <- application.yml <- application.yaml
如果springboot项目打成了jar包,那么在jar包同级的以上配置会优先于jar包内写好的以上配置文件读取。

4、说一说SpringBoot的自动装配?

SpringBoot内置了许多的starter依赖,在starter中许多配置都是内置配置好了的,因此SpringBoot有个不成文的说法约定大于配置。也就是说,你只需要导入相关的依赖就可以了,默认配置已经交给Spring处理好了。

如果你觉得文章对你有帮助,那就请作者喝杯咖啡吧☕
微信
支付宝
  条评论