栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring进阶(一)自定义IOC&AOP框架

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring进阶(一)自定义IOC&AOP框架

一. Spring概述

Spring概述_舞鹤白沙编码日志-CSDN博客

Spring集成web环境_舞鹤白沙编码日志-CSDN博客

Spring的事务_舞鹤白沙编码日志-CSDN博客

Spring JDBCTemplate & 声明式事务_舞鹤白沙编码日志-CSDN博客

二.Spring核心思想 IOC&AOP

AOP概述_舞鹤白沙编码日志-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.xml



  4.0.0

  com.lagou.edu
  lagou-transfer
  1.0-SNAPSHOT
  war

  lagou-transfer Maven Webapp
  
  http://www.example.com

  
    UTF-8
    11
    11
  


  
    
    
      junit
      junit
      4.12
    

    
    
      mysql
      mysql-connector-java
      5.1.35
    
    
    
      com.alibaba
      druid
      1.1.21
    

    
    
      javax.servlet
      javax.servlet-api
      3.1.0
      provided
    

    
    
      com.fasterxml.jackson.core
      jackson-databind
      2.9.6
    

    
    
      dom4j
      dom4j
      1.6.1
    
    
    
      jaxen
      jaxen
      1.1.6
    
    
    
      cglib
      cglib
      2.1_2
    
  

  
    
      
      
        org.apache.maven.plugins
        maven-compiler-plugin
        3.2
        
          11
          11
          UTF-8
        
      

      
      
      
        org.apache.tomcat.maven
        tomcat7-maven-plugin
        2.2
        
          8080
          /
        
      
    
  

9. 项目编码结构

四.所涉及扩展知识点-设计模式代码示例 (一)单例模式

单例模式代码示例_舞鹤白沙编码日志-CSDN博客

(二)工厂模式

简单工厂模式代码示例_舞鹤白沙编码日志-CSDN博客

工厂方法模式代码示例_舞鹤白沙编码日志-CSDN博客

(三)代理模式

静态代理代码示例_舞鹤白沙编码日志-CSDN博客

动态代理模式代码示例_舞鹤白沙编码日志-CSDN博客

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/685641.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号