spring-210728-01---AOP-AspectJ注解

spring-210730-03---Spring5新功能-Webflux-响应式编程-Reactor实现&操作符 spring-210730-03—Spring5新功能-Webflux-响应式编程-Reactor实现&操作符 Reactor有两个核心类,Mono和Flux 操作符 Reactor演示 引入依赖 TestReactor.java Reactor有两个核心类,Mono和Flux 响应式编程操作中,Reactor是满足Reactive规范框架。 Reactor有两个核心类,Mono和Flux,这两个类实现了接口Publisher,提供了丰富的操作符。 1) Flux对 阅读详情

spring-210728-01—AOP-AspectJ注解


创建User类,在类里面定义方法add()
创建增强类,UserProxy类
进行通知的配置
	1. 配置Spring文件,开启注解扫描
	2. 使用注解创建User和UserProxy
	3. 在增强类上面添加注解@Aspect
	4. 配置Spring文件,开启生成代理对象
配置不同的通知类型

演示

User.java

package com.bgy.spring.aoptest;

import org.springframework.stereotype.Component;

// 被增强的类
@Component
public class User {

    public void add(){

        // 测试有异常的情况
//        int a = 10/0;

        System.out.println("user  add.............");
    }
}

UserProxy.java

package com.bgy.spring.aoptest;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;

// 增强的类
@Component
@Aspect     // 生成代理对象
public class UserProxy {

    // 前置通知
    // 注解@Before 表示作为前置通知
    @Before(value = "execution(* com.bgy.spring.aoptest.User.add(..))")
    public void before(){
        System.out.println("before..........");
    }

    // 最终通知
    // 不管有没有异常,都会执行
    @After(value = "execution(* com.bgy.spring.aoptest.User.add(..))")
    public void after(){
        System.out.println("after.............");
    }

    // 后置通知
    // 如果有异常就不执行了
    @AfterReturning(value = "execution(* com.bgy.spring.aoptest.User.add(..))")
    public void afterReturning(){
        System.out.println("afterReturning.............");
    }

    // 异常通知
    @AfterThrowing(value = "execution(* com.bgy.spring.aoptest.User.add(..))")
    public void afterThrowing(){
        System.out.println("afterThrowing.............");
    }

    // 环绕通知
    @Around(value = "execution(* com.bgy.spring.aoptest.User.add(..))")
    public void around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
        System.out.println("around   环绕之前.............");

        // 被增强的方法
        proceedingJoinPoint.proceed();

        System.out.println("around   环绕之后.............");
    }
}

bean01.xml

需要引入名称空间:
	xmlns:aop="http://www.springframework.org/schema/aop"
	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
                           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">


    <!-- 开启注解扫描 -->
    <context:component-scan base-package="com.bgy.spring.aoptest"></context:component-scan>

    <!--
        开启Aspect生成代理对象
        意思就是只要类上面有注解@Aspect,就生成代理对象。
    -->
    <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
</beans>

TestAop.java

import com.bgy.spring.aoptest.User;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestAop {

    @Test
    public void test(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean01.xml");

        User user = context.getBean("user", User.class);

        user.add();
    }
}
// 没有异常的情况,运行结果:
//        around   环绕之前.............
//        before..........
//        user  add.............
//        around   环绕之后.............
//        after.............
//        afterReturning.............

//有异常的运行情况:
//        around   环绕之前.............
//        before..........
//        after.............
//        afterThrowing.............
spring-210729-03---Spring5新功能-整合JUnit5单元测试 spring-210729-03—Spring5新功能-整合JUnit5单元测试 测试Junit4 测试Junit5 Spring5支持整合JUnit5 第一步:引入Spring相关的依赖 第二步:创建测试类,使用注解方式完成 测试Junit4 TestJunit4.java import com.bgy.spring.service.UserService02; import org.junit.Test; import org.junit.runner.RunWith; import o 阅读详情

相关推荐

PL端:HDMI 输出实验

开发板没有HDMI编码芯片,是将FPGA的3.3差分IO直接连接到HDMI连接器,FPGA 完成 24 位 RGB 编码输出TMDS 差分信号。1、学会使用第三点IP核,首先是添加,后面的使用和自带IP核操作一致。2、主要还是在梳理vivado使用流程。

qq_43441284的博客 4287

spring-210728-02---AOP-AspectJ注解-抽取相同切入点&设置优先级

spring-210728-02—AOP-AspectJ注解-抽取相同切入点&设置优先级 相同切入点抽取 UserProxy02.java 多个增强类,同一个方法进行增强,设置增强类优先级 演示 Person.java PersonProxy01.java PersonProxy02.java bean01.xml TestPerson.java 相同切入点抽取 UserProxy02.java package com.bgy.spring.aoptest; import org

白光一的博客 571

开关电源补偿设计避坑手册:为什么你的Buck电路总在轻载时振荡?

本文深入剖析了Buck电路在轻载时发生振荡的根本原因,并提供了专业的补偿设计避坑指南。文章指出,轻载下输出滤波器Q值飙升、DCM模式切换导致的小信号模型剧变是主要诱因,并详细对比了Type II与Type III补偿网络在宽负载范围内的表现差异。通过结合LTspice仿真与工程实践,指导工程师如何优化补偿环路设计,确保电源从满载到空载的全程稳定。

hadoop5ranger的博客 675

spring-210730-02---Spring5新功能-Webflux-响应式编程-Java实现

spring-210730-02—Spring5新功能-Webflux-响应式编程-Java实现 什么是响应式编程 观察者模式(演示) ObserverTest.java 尚硅谷视频给的例子 Flow.java Main.java 什么是响应式编程 什么是响应式编程: 简称RP(Reactive Programming) 响应式编程是一种面向数据流和变化传播的编程范式。这意味着可以在编程语言中很方便地表达静态或动态的数据流, 而相关的计算模型会自动将变化的值通过数据流进行传播。 例

白光一的博客 404

【Bug—eNSP】华为eNsp路由器设备启动一直是0解决方案!

软件,添加AR设备时启动异常,最开始错误代码是40,最后通过重新安装,又出现了新的问题,启动AR设备一直是0,而且界面卡住。打开控制面板→网络和Internet→网络和共享中心→更改适配器设置,然后再按以下步骤一次操作。重新打开eNsp,然后选择注册设备,注册成功后重新启动一下,这个时候AR设备就可以正常启动啦。打开eNsp→菜单→工具→选项→服务器设置,写入刚刚写的IP地址就可以了。打开VirtualBox,将左侧的文件全部删除(点击删除所有文件)

享你所想 3418

眼动数据分析基础_AOI分析动态刺激物

如果您正在研究人们对如视频、动画等动态刺激物的视觉行为,动态AOI工具可为您提供类似静态AOI工具对于图片及其他静止刺激物分析的同样功能。创建和编辑动态AOI的过程和静态AOI相似。 关于动态AOI工具的使用,有几点非常重要: 多个看到相同线性动态刺激物的用户的眼动数据叠加是有价值的; 动态AOI不能用于非线性动态记录的分析; 动态AOI不能用于静态刺激物,如图片的分析; 动态AOI可以被开启、关闭、移动、调整大小及跟踪相关分析对象 首先,我们来定义两种不同的动态刺激物:线性动态刺激物(LDS),是指固

Kobe123brant的博客 3503

spring-210728-03---JdbcTemplate操作数据库-查询功能

spring-210728-03—JdbcTemplate操作数据库-查询功能 演示 UserDao.java(dao层接口) UserDaoImpl.java(这里实现DQL操作) UserService.java(这里调用dao) TestUser01.java(测试) bean01.xml(Spring配置文件) User.java(实体类) 演示 UserDao02.java(dao层接口) package com.bgy.spring.dao; import com.bgy.spring.e

白光一的博客 369

14 ABSOLUTE评估肿瘤纯度

14 ABSOLUTE评估肿瘤纯度 Absolute介绍 ABSOLUTE可以直接从体细胞突变和拷贝数变异的结果中推断肿瘤纯度和倍性的计算方法。 通常来说,我们取肿瘤组织进行测序,往往是一个混合样品,既包括肿瘤细胞也包括正常细胞,因此需要进行肿瘤纯度 purity 的评估。当从混合样品中提取 DNA 进行测序后,得到的也是一个混合样品的结果。肿瘤不一定是单纯的二倍体了,其本身异质性高,存在部分突变部分不突变的情况,直接分析拷贝数变异,得到的结果并不准确,评估肿瘤倍性 ploidy 也更加必要。而 ABSO

qq_23435961的博客 4215

spring-210724-04--IOC容器--Bean管理XML方式-注入空值和特殊符号

spring-210724-04–IOC容器–Bean管理XML方式-注入空值和特殊符号 beantest21072401.xml(笔记在注释中哦) TestBean21072401.java beantest21072401.xml(笔记在注释中哦) <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="h

白光一的博客 319

使用plot函数可视化F分布累积分布函数数据(R语言)

在上面的代码中,我们使用了seq()函数来生成从0到5之间,以0.1为步长的一组F值。然后,我们指定了分子自由度为3,分母自由度为8,并使用pf()函数计算了对应的F分布CDF值。在本文中,我们将介绍如何使用R语言的plot函数来可视化F分布的累积分布函数(CDF)数据。通过使用plot函数,我们可以直观地了解F分布的累积分布函数,并对F值和对应的累积概率之间的关系有更深入的认识。运行上述代码后,我们将获得一个由F值和对应的累积概率构成的图形,其中x轴表示F值,y轴表示累积概率。

LogicGuruX的博客 502

2024年数字IC秋招-大疆-数字芯片开发工程师-笔试题

笔试题型:选择题 + 简答题笔试平台:大疆创新(电脑监控)笔试时间:90min做题感受:知识面覆盖很广,很多题目不会做(1) 什么是功耗优化中的DVFS技术?(2)降低功耗的原理是什么?(3)一般工作流程是怎样的?(4)必须的硬件模块有哪些?

qq_42135020的博客 2667

spring-210724-01--IOC容器--Bean管理XML方式-创建对象和set注入属性

spring-210724-01–IOC容器–Bean管理XML方式-创建对象和set注入属性 IOC操作Bean管理(概念) IOC操作Bean管理(基于xml方式) 基于xml方式创建对象 基于xml方式注入属性 set方法注入步骤 测试代码 Book.java bean1.xml TestSpring5.java IOC操作Bean管理(概念) 1. Bean管理就是指两个操作 1)Spring创建对象 2)Spring注入属性 2. Bean管理操作 1)基于xml配置

白光一的博客 313

在Simulink中构建永磁同步电机的网络化控制模型,并分析通信网络对系统性能的影响

核心优势通过仿真验证了网络延迟和丢包对PMSM控制性能的影响。提供了改进PI参数或引入自适应控制的解决方案。扩展方向抗干扰控制:结合卡尔曼滤波或滑模控制抑制网络噪声。时间敏感网络(TSN)建模:参考知识库[2]的中断触发方式,实现确定性通信。网络安全仿真:模拟恶意攻击(如数据篡改)对控制系统的威胁。

xiaoheshang_123的博客 168

spring-210729-02---Spring5新功能-Nullable注解&函数式注册对象

spring-210729-02—Spring5新功能-Nullable注解&函数式注册对象 演示支持函数式风格 User.java TestUser04.java Spring5框架核心容器支持@Nullable注解 @Nullable可以使用在方法、属性、参数上面, 表示方法返回值可以为空、属性值可以为空、参数值可以为空 Spring5框架核心容器支持函数式风格GenericApplicationContext/AnnotationConfigApplicationContext

白光一的博客 293

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

spring-210727-06--IOC容器--Bean管理注解方式-注入属性@Resource&@Value

spring-210727-06–IOC容器–Bean管理注解方式-注入属性@Resource&@Value 演示@Resource UserDao03.java(@Resource) UserDaoImpl03.java(@Resource) UserService03.java(@Resource) UserService04(@Value) userbean.xml TestUser03.java @Autowired: 根据属性类型进行自动注入 @Qualifier: 根据属性名称进行

白光一的博客 278

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

spring-210730-01---Spring5新功能-Webflux-基本概念

spring-210730-01—Spring5新功能-Webflux-基本概念 SpringWebFlux介绍 异步非阻塞解释 WebFlux特点 比较SpringMVC SpringWebFlux介绍 WebFlux官方文档说明地址: https://docs.spring.io/spring-framework/docs/current/reference/html/web-reactive.html SpringWebFlux介绍: 1)是Spring5中新添加的模块,用于web开发,功

白光一的博客 248

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

spring-210724-09--IOC容器--Bean管理-作用域(设置单&多实例)

spring-210724-09–IOC容器–Bean管理-作用域(设置单&多实例) scope概念 Courses.java scopebean.xml(设置scope) TestScope.java scope概念 在Spring 中配置文件bean标签里面有一个属性(scope)用于设置单实例,还是多实例 scope属性: singleton:默认值,表示单实例对象 prototype:表示多实例对象 singleton和prototype的区别: 设置singleton:

白光一的博客 240

spring-210724-08--IOC容器--Bean管理-工厂bean

spring-210724-08–IOC容器–Bean管理-工厂bean 工厂bean(FactoryBean) MyFactoryBean.java(实现FactoryBean接口) myfactorybean.xml TestFactoryBean.java 工厂bean(FactoryBean) Spring 中有两种类型的bean,一种是普通bean,一种是工厂bean(FactoryBean) 普通bean: 配置文件中定义bean的类型就是返回类型。 工厂bean: 在配置文件中定义

白光一的博客 231

spring-210729-01---Spring5新功能-整合日志框架

spring-210729-01—Spring5新功能-整合日志框架 log4j2.xml 日志手动输出 Spring5新功能特性地址:https://www.cntofu.com/book/95/33-what-new-in-the-spring-framework.md 特点: 整个Spring5框架基于Java8, 运行时兼容JDK9, 许多不建议使用的类和方法在代码库中删除 Spring 5.0框架自带了通用的日志封装 Spring5已经移除了Log4jConfigListe

白光一的博客 225

spring-210727-07--IOC容器--Bean管理注解方式-完全注解开发

spring-210727-07–IOC容器–Bean管理注解方式-完全注解开发 SpringConfig.java TestUser04.java 创建配置类,替代xml配置文件 SpringConfig.java package com.bgy.spring.config; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Con

白光一的博客 212

spring-210727-01---AOP-基本概念&底层原理

spring-210727-01—AOP-基本概念&底层原理 什么是AOP 底层原理 什么是AOP AOP为Aspect Oriented Programming的缩写,意为:面向切面编程。 通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。 AOP是OOP的延续,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。 利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。 不通过修改源代码的

白光一的博客 211

实际工程问题:AI 生成 Spring Cache(@Cacheable / @CachePut / @CacheEvict)缓存注解踩坑

商品详情服务,要求:商品基础信息走缓存,减少 DB 查询;典型:AI 只贴注解,忽略 AOP 代理、key 设计、缓存穿透/击穿/过期、序列化、同步刷新,本地单测正常,上线后缓存脏数据、命中率异常、雪崩。如果业务在事务中,@CacheEvict / @CachePut 如果在事务提交前执行,一旦事务回滚,缓存已经被删掉/更新,数据不一致。• 如果在同一个类里用 this.xxx() 调用带缓存注解的方法,不走代理,缓存直接失效;// 更新商品:先更新 DB,再删除缓存,而不是直接 @CachePut。

2401_89363342的博客 479

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 349

MCP 2026-07-28 无状态协议大改版:Spring AI 2.1 多轮往返请求与网关路由落地

无状态,所以任何实例都能处理任何请求,扩容不再需要粘性会话;显式句柄,所以跨调用状态是可审计、可过期的,而不是藏在进程内存里;幂等重放,所以交互式中断在分布式环境下也可恢复,代价是你要自己保证副作用可对账;头部路由,所以网关能在不解析 body 的前提下做治理,而校验 header/body 一致性成了新的安全底线。这些没有一个是在发明新概念。它们是分布式系统里被验证过二十年的老手艺:无状态、显式上下文、幂等、网关治理、fail-fast、可观测。

qq_36021478的博客 154

SpringBoot 新闻推荐系统:88个Java文件105个接口,首页推荐位是后端按点击数排出来的

# SpringBoot 新闻推荐系统:88个Java文件105个接口,首页推荐位是后端按点击数排出来的 > 这是一套基于 Spring Boot 的新闻推荐系统源码,配套 `db.sql` 建表脚本,业务覆盖新闻发布、排行榜管理、评论回复、点赞点踩、收藏夹和轮播图配置。形态是**前后台双端**:前台是读者用的 layui 静态站,后台是管理员用的 Vue 单页应用(编译产物已嵌在工程里)。最值

面朝大海 255

模型“看不见”中间的东西——prompt cache 与 Zone 分区

本文揭示了LLM系统中promptcache失效的根源:动态内容错置于系统提示词前缀,导致缓存命中率从80%骤降至4%。核心教训是“变化内容必须排在最后”——通过Zone分区(ZoneA稳定区、ZoneB动态区),将每轮可能变化的内容移至末尾,可确保前缀稳定,恢复高命中率。关键在于:前缀匹配要求逐字节相同,任何一处变动即导致后续全部失效。修复建议包括:重构提示词结构、正确分类内容、监控缓存单位(字节与token不可混用)、避免压缩破坏前缀。最终实现成本降低9倍,提升推理效率。

qinglongcn的博客 188
上一篇: spring-210727-04---AOP-AspectJ准备
下一篇: spring-210728-02---AOP-AspectJ注解-抽取相同切入点&设置优先级
白光一
博客等级 码龄9年 0粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值