SSM - Springboot - MyBatis-Plus 全栈体系(十一)

这篇具有很好参考价值的文章主要介绍了SSM - Springboot - MyBatis-Plus 全栈体系(十一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第二章 SpringFramework

五、Spring AOP 面向切面编程

6. Spring AOP 基于 XML 方式实现(了解)

6.1 准备工作
  • 加入依赖
  • 和基于注解的 AOP 时一样。
  • 准备代码
  • 把测试基于注解功能时的 Java 类复制到新 module 中,去除所有注解。
6.2 配置 Spring 配置文件
<!-- 配置目标类的bean -->
<bean id="calculatorPure" class="com.alex.aop.imp.CalculatorPureImpl"/>

<!-- 配置切面类的bean -->
<bean id="logAspect" class="com.alex.aop.aspect.LogAspect"/>

<!-- 配置AOP -->
<aop:config>

    <!-- 配置切入点表达式 -->
    <aop:pointcut id="logPointCut" expression="execution(* *..*.*(..))"/>

    <!-- aop:aspect标签:配置切面 -->
    <!-- ref属性:关联切面类的bean -->
    <aop:aspect ref="logAspect">
        <!-- aop:before标签:配置前置通知 -->
        <!-- method属性:指定前置通知的方法名 -->
        <!-- pointcut-ref属性:引用切入点表达式 -->
        <aop:before method="printLogBeforeCore" pointcut-ref="logPointCut"/>

        <!-- aop:after-returning标签:配置返回通知 -->
        <!-- returning属性:指定通知方法中用来接收目标方法返回值的参数名 -->
        <aop:after-returning
                method="printLogAfterCoreSuccess"
                pointcut-ref="logPointCut"
                returning="targetMethodReturnValue"/>

        <!-- aop:after-throwing标签:配置异常通知 -->
        <!-- throwing属性:指定通知方法中用来接收目标方法抛出异常的异常对象的参数名 -->
        <aop:after-throwing
                method="printLogAfterCoreException"
                pointcut-ref="logPointCut"
                throwing="targetMethodException"/>

        <!-- aop:after标签:配置后置通知 -->
        <aop:after method="printLogCoreFinallyEnd" pointcut-ref="logPointCut"/>

        <!-- aop:around标签:配置环绕通知 -->
        <!--<aop:around method="……" pointcut-ref="logPointCut"/>-->
    </aop:aspect>

</aop:config>
6.3 测试
@SpringJUnitConfig(locations = "classpath:spring-aop.xml")
public class AopTest {

    @Autowired
    private Calculator calculator;

    @Test
    public void testCalculator(){
        System.out.println(calculator);
        calculator.add(1,1);
    }
}

7. Spring AOP 对获取 Bean 的影响理解

7.1 根据类型装配 bean
7.1.1 情景一
  • bean 对应的类没有实现任何接口

  • 根据 bean 本身的类型获取 bean

    • 测试:IOC 容器中同类型的 bean 只有一个

      正常获取到 IOC 容器中的那个 bean 对象

    • 测试:IOC 容器中同类型的 bean 有多个

      会抛出 NoUniqueBeanDefinitionException 异常,表示 IOC 容器中这个类型的 bean 有多个

7.1.2 情景二
  • bean 对应的类实现了接口,这个接口也只有这一个实现类
    • 测试:根据接口类型获取 bean
    • 测试:根据类获取 bean
    • 结论:上面两种情况其实都能够正常获取到 bean,而且是同一个对象
7.1.3 情景三
  • 声明一个接口

  • 接口有多个实现类

  • 接口所有实现类都放入 IOC 容器

    • 测试:根据接口类型获取 bean

      会抛出 NoUniqueBeanDefinitionException 异常,表示 IOC 容器中这个类型的 bean 有多个

    • 测试:根据类获取 bean

      正常

7.1.4 情景四
  • 声明一个接口

  • 接口有一个实现类

  • 创建一个切面类,对上面接口的实现类应用通知

    • 测试:根据接口类型获取 bean

      正常

    • 测试:根据类获取 bean

      无法获取

  • 原因分析:

    • 应用了切面后,真正放在 IOC 容器中的是代理类的对象
    • 目标类并没有被放到 IOC 容器中,所以根据目标类的类型从 IOC 容器中是找不到的

SSM - Springboot - MyBatis-Plus 全栈体系(十一),SSM+全栈体系,spring boot,mybatis,java

7.1.5 情景五
  • 声明一个类
  • 创建一个切面类,对上面的类应用通知
    • 测试:根据类获取 bean,能获取到

SSM - Springboot - MyBatis-Plus 全栈体系(十一),SSM+全栈体系,spring boot,mybatis,java

  • debug 查看实际类型:

SSM - Springboot - MyBatis-Plus 全栈体系(十一),SSM+全栈体系,spring boot,mybatis,java文章来源地址https://www.toymoban.com/news/detail-732001.html

7.2 使用总结
  • 对实现了接口的类应用切面
    SSM - Springboot - MyBatis-Plus 全栈体系(十一),SSM+全栈体系,spring boot,mybatis,java
  • 对没实现接口的类应用切面 new
    SSM - Springboot - MyBatis-Plus 全栈体系(十一),SSM+全栈体系,spring boot,mybatis,java
  • 如果使用 AOP 技术,目标类有接口,必须使用接口类型接收 IoC 容器中代理组件!

到了这里,关于SSM - Springboot - MyBatis-Plus 全栈体系(十一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot整合JUnit--MyBatis--MyBatis-Plus--Druid

    文章转自黑马程序员SpringBoot学习笔记,学习网址:黑马程序员SpringBoot2教程 1.整合JUnit ​ SpringBoot技术的定位用于简化开发,再具体点是简化Spring程序的开发。所以在整合任意技术的时候,如果你想直观感触到简化的效果,你必须先知道使用非SpringBoot技术时对应的整合是如何做

    2023年04月23日
    浏览(38)
  • SpringBoot(整合MyBatis + MyBatis-Plus + MyBatisX插件使用)

    1.需求分析 2.数据库表设计 3.数据库环境配置 1.新建maven项目 2.pom.xml 引入依赖 3.application.yml 配置数据源 数据库名 用户名 密码 驱动是mysql8的(因为上面使用了版本仲裁) 4.Application.java 编写启动类 5.测试 6.配置类切换druid数据源 7.测试数据源是否成功切换 4.Mybatis基础配置 1

    2024年03月20日
    浏览(44)
  • springboot+mybatis-plus实现自动建表

    好长时间没输出了,最近工作上也是太多事,领导动不动就拍脑门,那叫一个酸爽~ 工作能力的提现不但是技术或解决问题的能力上,还体现在要能立刻满足领导的各种需求,不管是哪方面的需求,这样才能够拍上马屁,步步高升。 言归正传,作为技术从业者,还是要多深耕

    2024年02月16日
    浏览(28)
  • Springboot 整合Mytbatis与Mybatis-Plus

    目录 1. springboot整合mybatis    1.1 添加pom.xml依赖  1.2 新建jdbc.properties 文件添加以下内容  1.3 新建generatorConfig.xml 文件添加以下内容 (自动生成代码类)   1.4 修改application.properties 文件 添加以下内容  1.5 修改主类MapperScan  1.6 编写接口实现类进行测试  2. springboot整合mybatis-p

    2024年02月06日
    浏览(33)
  • SpringBoot整合MyBatis-Plus,赶紧整过来!

    提示:以下是本篇文章正文内容 MyBatis-Plus官网介绍:MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 MyBatis-Plus封装了单表的crud操作,减少基础代码编写,提高开发效率。 支持自

    2024年02月06日
    浏览(28)
  • 如何在springboot中配置mybatis-plus

    MyBatis-Plus(简称为MP)是一个开源的Java持久层框架,它是在MyBatis基础上进行扩展的。他的出现是为了进一步简化和增强MyBatis的功能,提供更多便捷的特性和工具,以提高开发效率。 本文将阐述如何在springboot中配置和使用mybatis-plus 目录 1配置 2 使用 在pom.xml文件中配置mybati

    2024年02月13日
    浏览(29)
  • SpringBoot整合Mybatis-plus实现商品推荐

    在开始编写代码之前,我们需要准备一下环境: Java 8+ IntelliJ IDEA Node.js 和 npm Vue CLI 如果你还没有安装Vue CLI,则可以使用以下命令在终端中安装: 首先,我们需要使用Spring Boot创建一个新项目。在IntelliJ IDEA中,选择“New Project”,然后选择“Spring Initializr”。 在“New Project”

    2024年02月01日
    浏览(35)
  • springboot3.2 整合 mybatis-plus

    springboot3.2 正式发布了 迫不及待地的感受了一下 结果在整个mybatis-plus 的时候遇到了如下报错 主要是由于 mybatis-plus 中 mybatis 的整合包版本不够导致的 排除 mybatis-plus 中自带的 mybatis 整合包,单独引入即可 修改依赖后正常

    2024年02月04日
    浏览(39)
  • springboot使用Mybatis-plus分页插件

    在  pom.xml   文件中添加 MyBatis Plus 和分页插件的依赖: 注意替换  {mybatis-plus-version}  为对应的版本号。 在 Spring Boot 的配置文件  application.yml   中添加分页插件的配置参数: 注意代码中的注释,其中   PaginationInterceptor  表示使用 MyBatis Plus 提供的分页插件。 在接口层使用

    2024年02月07日
    浏览(34)
  • springboot mybatis-plus数据库超时配置

    超时异常 写XML 写法,单位秒 Mapper类写法,单位秒 超时异常 整个事务的超时时间,单位是秒。 它的原理大致是事务启动时,事务上下文会计算一个到期时间deadLine(当前时间+超时时间),当mybatis - prepareStatement时,会调用 SpringManagedTransaction 的getTimeOut,该方法会计算事务剩

    2024年02月03日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包