Spring MVC之@Controller和@RestController注解
@Controller
和@RestController
都是在SpringMVC
中使用,作用在类上,用于申明该类是一个SpringMVC Controller
对象,即一个控制器Bean
。
@Controller
和@RestController
都是在SpringMVC
中使用,作用在类上,用于申明该类是一个SpringMVC Controller
对象,即一个控制器Bean
。
SpringMVC
执行流程主要由四大组件协同完成,分别是:DispatcherServlet
,HandlerMapping
,HandlerAdapter
和 ViewResolver
。
这些组件对开发者来说是不可见的,开发者只需要在 Controller
(Handler)层完成对请求业务的处理。
面试中经常会被问到:Servlet 是单例还是多例,这是一个很基础的问题,主要考察面试者的基础是否扎实。还可以关联出一串更深层的问题来考察面试者的知识深度。
问:Servlet是单例还是多例?
答:单例
问:单例情况下在多个请求时是怎么处理的?
答:多线程,为每个请求分配一条线程
问:单例在并发情况下线程是否安全?
答:不安全
问:有没有办法解决?
答:有。。。。如果回答可以使用 ThreadLocal
来隔离每个请求的线程是最好的。接着更深的坑
问:ThreadLocal 的原理是什么?怎么实现的?
答:。。。。答不上来 OR 回答上来了。后面正等着呢
问:使用ThreadLocal与同步代码块,那个优劣?
问:多线程。。。。并发。。。。。
答:。。。。死穴。。。。OVER
了解SpringMVC
的前端控制器截获请求后如何工作?如何分派请求。
VO、DTO、DAO、PO、BO、DO
:实际开发可能各种O
的使用也没有明确的界线,有时并没有分的很表楚。
各种O
的分离更多是从设计层面
上来理解,即数据经过各个层并与之对应的关系称呼。
当然理解了各种O的用途,在理解一些严谨的代码和数据流程是非常方便的。
Linux 下使用echo
执行base64
位的编解码
事务是一个最小的逻辑执行单元,整个事务不能分开执行,要么同时执行,要么同时放弃执行。
Mybatis的事务管理分为两种形式:JDBC
和MANAGED
Mybatis查询缓存分为一级缓存和二级缓存,一级缓存属于sqlsession
级别,二级缓存属于Mapper
级别。
Mybatis通过缓存机制可减轻直接访问数据库的压力,提高数据库性能。
根据个人开发习惯和需要,现对Linux下用于查看文件的命令进行汇总,下面汇总的命令的参数个人认为是常用易用且好用的。
Mybatis
是 apache
下的一个开源项目,是对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL
本身,而不需要花费精力去处理例如注册驱动、创建 connection
、创建statement
、手动设置参数、结果集检索等jdbc繁杂的过程代码。(statement、preparedStatemnt、CallableStatement)
配置起来,并通过 java 对象和 statement
中的sql 进行映射生成最终执行的 sql 语句,最后由 mybatis 框架执行 sql 并将结果映射成 java 对象并返回。