框架:
框指的是其是一个框子,有约束性;架是指的其支撑性。IT中的框架主要指的为解决特定的一个开放性问题而设计的具有一定约束性的支撑结构。在次结构上可以根据具体问题安插、扩展更多的组成部分,从而迅速和方便的构建完整的解决问题的方案。
特点:
- 不能完整的解决问题,但是可以帮助我们快速的解决问题
- 天生为扩展而设计的,不针对特定问题,特定问题需要扩展、安插来实现
- 框架时常配套了一些帮助解决某类问题的库或者工具,Java中就是一些列的jar包,其本质就是对jdk功能的扩展
SpringMVC框架的执行流程:
- 用户发送请求,请求被dispatcherServlet 捕获对url进行解析,根据URL,调用handlermapping找到对应的handler进行处理,执行完成后返回给modelandview返回给前端;
- dispatcherservlet根据modelandview对象调用视图解析器viewresolver进行结果渲染,返回到客户端
Struts2和springmvc的区别:
- 核心控制器:用途是处理所有的请,Struts2核心控制器是filter,而springMVC核心控制器是servlet。
- 控制器实例:springMVC是基于方法设计的,而Struts是基于对象,每次发送一个请求都实例化一个action,每个action都会注入。而springmvc只有一个实例,每次请求执行对应的方法即可
- 管理方式:springMVc是spring中的一个模块,通过spring管理更加简单方便,而Struts采用很多xml参数进行管理
- 参数传递:springmvc通过方法参数进行接收,Struts2则是自身提供
- 学习难度:Struts的拦截器、值栈、ognl表达式学习成本高,而springmvc比较简单,较快上手
- interceptor的实现机制:Struts有自己的拦截器机制,而springmvc则是用的独立的aop方式。导致Struts的配置文件比springmvc大,springmvc更加简洁,开发效率也比Struts高很多
spring的两大核心
IOC
核心原理:(容器map)+反射(工厂模式)+配置文件
AOP
核心原理:注解+动态代理(cglib+jdkproxy)在执行前后或者异常后做相关逻辑,主要用aop来做:事务处理,日志记录、权限判断
spring的事务传播特性
- propagation——required :如果存在一个事务就支持当前事务,如果没有则开启事务
- propagation——supports:如果存在一个事务支持当前事务,如果没有则以非事务的方式执行
- propagation——mandatory:如果存在一个事务则支持事务,如果没有一个事务则抛出异常
- propagation——requires-new:总是开启一个新的事务,如果一个事务已经存在则将这个存在的事务挂起
- propagation——not-supported:总是非事务的执行,并挂起任何存在的事务
- propagation——never:总是非事务的执行,如果存在一个活动的事务则抛出异常
- propagation——nested:如果一个活动的事务存在,则运行在一个嵌套的事物中,如果没有活动事务,则按照propagation-required属性执行