Spring 的个性是什么?IOC和AOP的原理是什么?AOP的注解有哪些?

个性:不便解耦,简化开发;AOP编程的反对;申明事务的反对;不便程序的测试;不便集成各种优良框架;升高Java EE API的应用难度;Java源码的经典学习范例
IOC和AOP原理:
IOC,管制反转是面向对象编程中的一种设计准则,基于java的反射机制以及工厂模式实现的,次要是协调各组件互相的依赖关系,同时大大提高了组件的能够移植性,用来减低代码之间的耦合度
原理:由容器控制程序之间的关系,而非传统事实中,由程序代码间接操控说白了就是由Spring容器来实现对象的对立管理工作,咱们只须要关怀 业务逻辑自身就能够了
AOP:面向切面编程,通过预编译形式和运行期动静实现程序性能的对立保护的一种技术,次要是应用动静代理实现的
原理:一是采纳动静代理技术,利用截取音讯的形式,对该音讯进行封装,以取代原有的对象执行;二是采纳动态织入的办法,须要引入特定的语法创立"方面",在编译期织入无关"方面"的代码,属于动态代理
AOP的注解:
@Before 前置告诉,在办法执行之前执行
@After 后置告诉,在办法执行之后执行
@AfterRunning 返回告诉,在办法失常完结后,返回后果之后执行,能够拜访办法的返回值
@AfterThrowing 异样告诉,在办法抛出异样之后
@Around 盘绕告诉,围绕办法执行

SpringBoot主动拆卸的原理是什么?

@SpringBootApplication注解,SpringBoot的这个注解利用在哪个类上就阐明这个类是主配置类
@SpringBootApplication是一个组合注解,是由@SpringBootConfiguration、@ComponentScan、@EnableAutoConfiguration三个注解组成的
@SpringBootConfiguration这个注解实际上就是代表了一个配置类,相当于一个beans.xml文件;
@ComponentScan的性能就是主动扫描并加载符合条件的组件或bean,最终将这些bean加载到容器中
@EnableAutoConfiguration代表开启SpringBoot的主动拆卸,原理是借助@Import的帮忙,将合乎主动配置条件的bean加载到IOC容器中,从而实现主动拆卸。

SpringBoot我的项目如何打包、部署、运行

SpringBoot的打包形式有很多种,最常见的war和jar,因为SpringBoot是前后端拆散的我的项目,所以jar进行部署更适合
首先要在配置文件中配置端口,数据库连贯等
在主启动类上加上extends SpringBootServletInitializer(想当于web.xml)并重写configure办法,这是为了打包springboot我的项目以及在web容器运行用的

Spring是如何管制事务的

spring管制事务有两种,一是编程式事务管制,二是申明式事务管制
编程式事务管制即通过编写代码的形式实现事务的管制
申明式事务管制
能够基于@Transactional注解的申明式事务管制,但应用@Transactional注解须要在配置文件中开启对这个注解的扫描
应用AOP的申明式事务管制,须要配置事务加强;配置事务加强办法的流传行为;配置切点和对应的事务告诉
基于TransactionProxyFactoryBean代理的申明式事务管制

SpringMVC罕用注解及作用

@Controller:标注一个控制器组件类,申明该类是SpringMVC的Controller
@RestController:该注解外面蕴含了Controller注解和ResponseBody注解
@Component:标注一个一般的Spring bean类
@Service: 标注是一个业务层组件类
@RequestMapping:该注解是建设申请的URL和解决办法之间的对应关系,能够作用在办法和类上
@Autowried:该注解能够对类成员、办法以及构造函数进行标注,实现主动拆卸的工作,该注解是依据类型进行主动拆卸的,通过该注解来打消 set,get办法。
@ResponseBody:该注解通常应用在管制层的办法上,用于将Controller的办法返回的对象,通过springmvc提供的接口转换为指定格局的数据,通过Response响应给客户端
@PathVariable该注解次要用来获取URL参数,反对Restfull格调的URL
@RequestParam注解是用来传递参数的,用于将申请参数数据映射到性能解决办法的参数上
@RequestBody该注解作用于获取申请体的内容

SpringMVC的工作流程

用户发送HTTP申请;
申请进入前端控制器DispatcherServlet
前端控制器调用处理器映射器HandlerMapping组件依据申请找映射的Controller解决
执行Controller解决办法,将返回后果给视图解析器ViewResolver组件
视图解析器依据Controller返回的后果将模型数据传递给前端
前端生成一个后果给客户端

Mybatis的工作原理是什么?Mybatis的缓存的了解

Mybatis的工作原理:
读取Mybatis配置文件
加载映射文件
结构会话工厂SqlSessionFactory
创立会话对象SqlSession实现和数据库的交互
定义Executor执行器接口来操作数据库
MappedStatement对象封装映射信息
输出参数映射
输入参数映射
Mybatis缓存的了解:
Mybatis有一级缓存和二级缓存,默认状况下一级缓存是开启,而且不能敞开
一级缓存是指SqlSession级别的缓存,当在同一个SqlSession中进行雷同的SQL语句查问时,第二次当前的查问不会从数据库查问,二是间接从缓存中获取,一级缓存最大能缓存1024条SQL
二级缓存是指能够跨SqlSession的缓存,是mapper级别的缓存,对于mapper级别的缓存不同的session是能够共享的;二级缓存须要在全局配置中开启二级缓存配置,在对应的mapper.xml中配置cache节点,在对应的select查问节点中增加的useCache=true

Mybatis中#{}和${}的区别?

mybatis在解决#{},会将sql中的#{}替换为?,调用PreparedStatement的set办法来赋值;
mybatis在解决${}时,就是把${}替换成变量的值
#{}是预编译解决,${}是字符串替换
预编译语句的劣势:一次编译、屡次运行,省去了解析优化等过程;还能避免sql注入
应用#{}能够无效的避免SQL注入,进步零碎安全性

SpringBoot的异样解决的五种形式?

自定义异样谬误页面--默认的异样解决机制
应用@ExceptionHandler注解解决部分异样--单个应用该注解办法的Controller异样
应用@ControllerAdive+@ExceptionHandler注解解决全局异样--依据不必的异样对不同的异样进行解决
配置SimpleMappingExceptionResolver类解决异样--通过将类注入到Spring容器中实现全局范畴解决异样
实现HandlerExceptionResolver接口解决异样

Spring中如何配置过滤器、拦截器

过滤器(Filter):
过滤器是Servlet中的一个组件,在Servlet之前执行,因为执行机会比Servlet要早,所以能够用来做一些过滤验证,
自定义过滤器先写一个类实现Filter
接口,重写init(),doFilter(),destroy()。
其中init()是实现Filter的初始化,
doFilter()是过滤逻辑的办法,
destroy()是销毁过滤器办法。
拦截器(Intercefptor):
拦截器是Spring框架定义的组件,Spring的处理器反对连接器利用,钱端控制器在调用处理器之前,如果有拦截器存在,就会先调用拦截器而后在调用处理器能够用来进行身份验证
自定义拦截器:先写一个类实现HandlerInterceptor接口,将拦挡解决逻辑写在响应的接口办法里,重写preHandle(),postHandle(),afterCompletion(),
其中proHandle()在进入controller的办法执行之前,如果返回值是true,则持续应用拦截器,反之拦截器不再向后调用,申请解决实现;
postHandle()处理器办法曾经执行实现,正筹备将ModelAndView对象返回给前端控制器之前执行。能够在该办法外面,批改ModelAndView对象。
afterCompletion()最初执行的办法,须要以后的preHandle()的返回值为true是才会执行,实用于清理资源的,返回值为false,该办法不会执行。