一、HTTP请求----->后台返回数据的流程
浏览器发送HTTP请求----->tomcat----->tomcat根据配置文件找到对应的web.xml----->tomcat将请求交给web项目----->监听器-----> 过滤器----->servlet----->controller层找到对应地址的方法(地址同@RequestMapping中地址一致)----->service层业务处理------>dao层数据处理(对数据库进行增删改查)实体类与数据库映射----->将数据返回前台页面
二、AOP概念与实现
1、概念
AOP,面向切面编程。将影响了多个类的公共行为封装到一个可以重用的模块。目的是将横切关注点与业务逻辑处理分离。
一个应用程序分为核心关注点和横切关注点。核心关注点和具体应用的功能相关,而横切关注点存在与整个系统的范围内。在AOP里,每个关注点的实现并不知道是否有其他关注点关注它,组合的流向是从横切关注点到主关注点。
(1)XML配置:定义切面----->定义切点----->声明通知(前置通知、后置通知、返回通知、异常通知、环绕通知)
(2)注解:@AspectJ声明切面,使用切点表达式execution
2、AOP的代理机制
(1)Java动态代理
Spring默认使用的是Java动态代理,代理的是接口。
(2)CGLIB代理
Spring中提供了对CGLIB代理的支持,主要改变就是设定ProxyFactoryBean的proxyTargetClass属性,将该属性值设定为true即可。使用CGLIB代理的好处就是不用在像使用Java动态代理那样去实现特定的接口,一个普通的Java类就可以了。如果一个业务对象并没有实现一个接口,默认使用CGLIB代理。可强制使用CGLIB代理,这种情况下,可能需要通知一个没
三、IOC概念与实现
1、概念
IOC,控制反转。IOC容器控制对象的创建,由容器进行对象注入,对象是被动接收依赖的对象。由Spring容器创建,当需要使用时,自动注入。
IOC解决了一般业务对象之间、业务对象与持久层之间存在的各种依赖关系,降低耦合度。控制反转是指在应用程序中对象的创建、销毁等不再由程序本身的编码实现,而是由外部的Spring容器在程序运行时根据需要注入到程序中,也就是对象的生命周期不是由程序本身来决定,而是由容器来控制,称为控制反转。
2、实现
(1)通过XML配置bean,根据配置文件初始化容器、创建bean并放入容器中完成容器的初始化。
(2)注解:@Component将POJO实例化到Spring容器中。
3、IOC的注入方法
(1)构造方法注入:在被注入对象可以通过在其构造方法中声明依赖对象的参数列表,让外部IoC容器知道它需要依赖哪些对象。
(2)setter 方法注入: 当前对象只要为其依赖对象所对应的属性添加setter方法,就可以通过setter方法将相应的依赖对象设置到被注入对象中。
(3)接口注入:被注入对象如果想要IoC为其注入对象,就必须实现某个接口,这个接口提供一个方法,用来为其注入依赖对象。
四、数据库事务的实现方式
2、实现方式
(1)编码方式:一是基于XML配置文件的方式;另一个是在业务方法上进行@Transactional注解,将事务规则应用到业务逻辑中。
使用注解@Transactional,Spring会去解析并生成bean,查看拥有相关注解的类,并为这些类生成代理,根据@Transactional的参数进行相关配置的注入,在代理中处理相关事务。
(2)声明式事务管理方式:基于AOP技术实现的声明式事务管理,实质是在方法执行前后进行拦截,然后在目标方法开始之前创建并加入事务,执行完目标方法后根据执行情况提交或回滚事务。