一. Spring概述
Spring概述_舞鹤白沙编码日志-CSDN博客
Spring集成web环境_舞鹤白沙编码日志-CSDN博客
Spring的事务_舞鹤白沙编码日志-CSDN博客
Spring JDBCTemplate & 声明式事务_舞鹤白沙编码日志-CSDN博客
二.Spring核心思想 IOC&AOP
AOP概述_舞鹤白沙编码日志-CSDN博客
初识IOC_舞鹤白沙编码日志-CSDN博客
三. 手写实现IOC-银行转账案例
(一)案例介绍
1. 银行转账案例界面
2. 银⾏转账案例表结构
(二)案例代码基础调用关系图
(三)融入IOC及AOP核心编程思想后的调用关系
1. 融入IOC编程思想后的调用关系图
从上图解析不难得出以下几点:
(1)把每个类的全限定类名配置在xml中。
(2)使用工厂来通过反射技术生产对象,工厂模式是解耦非常好的一种方式。
(3)创建ProxyFactory工厂用来生产TransferServiceImpl代理对象,并在生产代理对象过程中强化被代理对象的业务逻辑,从切面增加事务控制。而Servlet则通过ProxyFactory获取到增强的TransferServiceImpl被代理对象。
(4)ConnectionUtils同时被JdbcAccountDaoImpl及TransactionManager使用。
(5)需要其它类实例的类代码中只声明所需实例的接⼝类型,不出现 new 也不出现⼯⼚类的字眼,声明⼀个变量并提供 set ⽅法,在反射的时候将所需要的对象注⼊进去。
2. 在Service层实现事务控制
创建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. servlet层代码示例
TransferServlet类代码示例_舞鹤白沙编码日志-CSDN博客
6. service层代码示例
service层代码示例_舞鹤白沙编码日志-CSDN博客
7. dao层代码示例
dao层代码示例_舞鹤白沙编码日志-CSDN博客
8. pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lagou.edu</groupId>
<artifactId>lagou-transfer</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>lagou-transfer Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<!-- 单元测试Junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!-- mysql数据库驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency>
<!--druid连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.21</version>
</dependency>
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!-- jackson依赖 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.6</version>
</dependency>
<!--dom4j依赖-->
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<!--xpath表达式依赖-->
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1.6</version>
</dependency>
<!--引入cglib依赖包-->
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>2.1_2</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 配置Maven的JDK编译级别 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>11</source>
<target>11</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- tomcat7插件 -->
<!-- 注意:目前来说,maven中央仓库还没有tomcat8的插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8080</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
</project>
9. 项目编码结构
四.所涉及扩展知识点-设计模式代码示例
(一)单例模式
单例模式代码示例_舞鹤白沙编码日志-CSDN博客
(二)工厂模式
简单工厂模式代码示例_舞鹤白沙编码日志-CSDN博客
工厂方法模式代码示例_舞鹤白沙编码日志-CSDN博客
(三)代理模式
静态代理代码示例_舞鹤白沙编码日志-CSDN博客
动态代理模式代码示例_舞鹤白沙编码日志-CSDN博客