| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Spring进阶(一)自定义IOC&AOP框架 -> 正文阅读 |
|
[Java知识库]Spring进阶(一)自定义IOC&AOP框架 |
一. Spring概述Spring JDBCTemplate & 声明式事务_舞鹤白沙编码日志-CSDN博客 二.Spring核心思想 IOC&AOP三. 手写实现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博客 jquery-3.4.1.min.js代码示例_舞鹤白沙编码日志-CSDN博客 2. 工具类代码示例JsonUtils类代码示例_舞鹤白沙编码日志-CSDN博客 DruidUtils类代码示例_舞鹤白沙编码日志-CSDN博客 ConnectionUtils类代码示例_舞鹤白沙编码日志-CSDN博客 TransactionManager类代码示例_舞鹤白沙编码日志-CSDN博客 ?3. pojo实体类代码示例4. 工厂类代码示例BeanFactory类代码示例_舞鹤白沙编码日志-CSDN博客 ProxyFactory类代码示例_舞鹤白沙编码日志-CSDN博客 5. beans.xml代码示例6. servlet层代码示例TransferServlet类代码示例_舞鹤白沙编码日志-CSDN博客 7. service层代码示例8. dao层代码示例9. pom.xml
9. 项目编码结构 四.所涉及扩展知识点-设计模式代码示例(一)单例模式(二)工厂模式(三)代理模式 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 8:25:29- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |