Spring概述_舞鹤白沙编码日志-CSDN博客
Spring集成web环境_舞鹤白沙编码日志-CSDN博客
Spring的事务_舞鹤白沙编码日志-CSDN博客
Spring JDBCTemplate & 声明式事务_舞鹤白沙编码日志-CSDN博客
二.Spring核心思想 IOC&AOPAOP概述_舞鹤白沙编码日志-CSDN博客
初识IOC_舞鹤白沙编码日志-CSDN博客
三. 手写实现IOC-银行转账案例 (一)案例介绍 1. 银行转账案例界面 2. 银⾏转账案例表结构 (二)案例代码基础调用关系图 通过对上图的解析存在以下两个问题: (1) service 层实现类在使⽤ dao 层对象时,直接在TransferServiceImpl 中通过 AccountDao accountDao = new JdbcAccountDaoImpl() 获得了 dao 层对 象,然⽽⼀个 new 关键字却将 TransferServiceImpl 和 dao 层具体的⼀个实现类 JdbcAccountDaoImpl 耦合在了⼀起。(需要融入IOC编程思想将两个对象之间通过NEW的依赖交给第三方bean工厂) (2) service 层代码没有进⾏事务控制,如果转账过程中出现异常,将可能导致 数据库数据错乱,后果可能会很严重,尤其在⾦融业务。(需要在service层的业务逻辑中建立事务控制,并且采用AOP切面编程思想将事务控制代码从业务逻辑代码中剥离) (三)融入IOC及AOP核心编程思想后的调用关系 1. 融入IOC编程思想后的调用关系图从上图解析不难得出以下几点:
(1)把每个类的全限定类名配置在xml中。
(2)使用工厂来通过反射技术生产对象,工厂模式是解耦非常好的一种方式。
(3)创建ProxyFactory工厂用来生产TransferServiceImpl代理对象,并在生产代理对象过程中强化被代理对象的业务逻辑,从切面增加事务控制。而Servlet则通过ProxyFactory获取到增强的TransferServiceImpl被代理对象。
(4)ConnectionUtils同时被JdbcAccountDaoImpl及TransactionManager使用。
(5)需要其它类实例的类代码中只声明所需实例的接⼝类型,不出现 new 也不出现⼯⼚类的字眼,声明⼀个变量并提供 set ⽅法,在反射的时候将所需要的对象注⼊进去。
2. 在Service层实现事务控制 service 层没有添加事务控制,怎么办?没有事务就添加上事务控制,⼿动控制 JDBC 的 Connection 事务,但要注意将 Connection 和当前线程绑定(即保证⼀个线程只有⼀个 Connection ,这样操作才针对的是同⼀个 Connection ,进⽽控制的是同⼀个事务)创建ConnectionUtils工具类来解决上述问题。
3. 融入AOP核心思想后的调用关系图 (四)案例开发代码示例 1. 前端代码示例index.html代码示例_舞鹤白沙编码日志-CSDN博客
web.xml代码示例_舞鹤白沙编码日志-CSDN博客
jquery-3.4.1.min.js代码示例_舞鹤白沙编码日志-CSDN博客
2. 工具类代码示例JsonUtils类代码示例_舞鹤白沙编码日志-CSDN博客
DruidUtils类代码示例_舞鹤白沙编码日志-CSDN博客
ConnectionUtils类代码示例_舞鹤白沙编码日志-CSDN博客
TransactionManager类代码示例_舞鹤白沙编码日志-CSDN博客
3. pojo实体类代码示例pojo实体类代码示例_舞鹤白沙编码日志-CSDN博客
4. 工厂类代码示例BeanFactory类代码示例_舞鹤白沙编码日志-CSDN博客
ProxyFactory类代码示例_舞鹤白沙编码日志-CSDN博客
5. beans.xml代码示例beans.xml代码示例_舞鹤白沙编码日志-CSDN博客
6. servlet层代码示例TransferServlet类代码示例_舞鹤白沙编码日志-CSDN博客
7. service层代码示例service层代码示例_舞鹤白沙编码日志-CSDN博客
8. dao层代码示例dao层代码示例_舞鹤白沙编码日志-CSDN博客
9. pom.xml4.0.0 com.lagou.edu lagou-transfer1.0-SNAPSHOT war lagou-transfer Maven Webapp http://www.example.com UTF-8 11 11 junit junit4.12 mysql mysql-connector-java5.1.35 com.alibaba druid1.1.21 javax.servlet javax.servlet-api3.1.0 provided com.fasterxml.jackson.core jackson-databind2.9.6 dom4j dom4j1.6.1 jaxen jaxen1.1.6 cglib cglib2.1_2 org.apache.maven.plugins maven-compiler-plugin3.2 11 11 UTF-8 org.apache.tomcat.maven tomcat7-maven-plugin2.2 8080 /
9. 项目编码结构
四.所涉及扩展知识点-设计模式代码示例 (一)单例模式单例模式代码示例_舞鹤白沙编码日志-CSDN博客
(二)工厂模式简单工厂模式代码示例_舞鹤白沙编码日志-CSDN博客
工厂方法模式代码示例_舞鹤白沙编码日志-CSDN博客
(三)代理模式静态代理代码示例_舞鹤白沙编码日志-CSDN博客
动态代理模式代码示例_舞鹤白沙编码日志-CSDN博客



