SpringAop名词解释+基于xml的配置

本文详细介绍了AOP(面向切面编程)的基本概念,并通过具体示例演示了如何使用Spring AOP进行代码实现,包括前置通知、后置通知、环绕通知、异常通知及最终通知的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,AOP名词解释

 

 2,AOP演示

(1)导包:

(2)准备目标对象

package com.songyan.service;

import org.aspectj.lang.ProceedingJoinPoint;

import sun.net.www.content.text.plain;

/**
 * 通知类
 * @author sy
 *
 */
public class MyAdvice {
    //前置通知-->目标方法调用前调用
    //后置通知(如果发生异常不在调用)-->目标方法调用后调用
    //环绕通知-->目标方法调用前和后调用
    //异常拦截通知-->出现异常调用
    //后置通知(不论是否发生异常都会调用)-->目标方法调用后调用
/*-----------------------前置--------------------------*/
    public void before()
    {
        System.out.println("before~~~~~~");
    }
    
    /*-----------------------后置(如果发生异常不在调用)--------------------------*/
    public void after()
    {
        System.out.println("after(如果发生异常不在调用)~~~~~~");
    }
    
    /*-----------------------环绕--------------------------*/
    public Object around(ProceedingJoinPoint joinPoint) throws Throwable
    {
        System.out.println("around(上)~~~~~~");
        //调用目标代码
        Object proceed=joinPoint.proceed();
        System.out.println("around(下)~~~~~~");
        return proceed;
    }
    
    /*-----------------------异常拦截--------------------------*/
    public void afterException()
    {
        System.out.println("afterException~~~~~~");
    }
    
    
    /*-----------------------后置(不论是否发生异常都会调用)--------------------------*/
    public void after_final()
    {
        System.out.println("after(不论是否发生异常都会调用)~~~~~~");
    }
    
    
}

 

(3)准备通知(事物管理的代码)

  S1:导入AOP命名空间

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.springframework.org/schema/beans" 
   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-4.2.xsd
  http://www.springframework.org/schema/context
  http://www.springframework.org/schema/context/spring-context-4.2.xsd
  http://www.springframework.org/schema/aop
  http://www.springframework.org/schema/aop/spring-aop-4.2.xsd "
> </beans>

S2:配置目标对象

    <!--配置目标对象 -->
    <bean name="userservice" class="com.songyan.service.UsrServiceImpl"></bean>

S3:配置通知对象

    <!--配置通知对象 -->
    <bean name="myadvice" class="com.songyan.service.MyAdvice"></bean>

S4:将通知织入目标对象

    <!--将通知对象织入目标对象 -->
    <aop:config>
        <!--设置切入点 -->
        <!--public void com.songyan.service.UsrServiceImpl.save() 
       void com.songyan.service.UsrServiceImpl.save() * com.songyan.service.UsrServiceImpl.save()
       * com.songyan.service.UsrServiceImpl.*() * com.songyan.service.*ServiceImpl.*()
       * com.songyan.service.*ServiceImpl.*(..) * com.songyan.service..*ServiceImpl.*(..)
--> <aop:pointcut expression="* com.songyan.service..*ServiceImpl.*(..)" id="pc" />

(4)配置进行织入(通知织入目标对象)

        <!--给通知 设置切面 -->
        <aop:aspect ref="myadvice">
            <aop:before method="before" pointcut-ref="pc" />
            <aop:after-returning method="after" pointcut-ref="pc" />
            <aop:around method="around" pointcut-ref="pc" />
            <aop:after-throwing method="afterException" pointcut-ref="pc" />
            <aop:after method="after_final" pointcut-ref="pc" />
        </aop:aspect>
    </aop:config>
</beans>

 

完整配置信息

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.springframework.org/schema/beans" 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-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd ">
    <!--配置目标对象 -->
    <bean name="userservice" class="com.songyan.service.UsrServiceImpl"></bean>
    <!--配置通知对象 -->
    <bean name="myadvice" class="com.songyan.service.MyAdvice"></bean>
    <!--将通知对象织入目标对象 -->
    <aop:config>
        <!--设置切入点 -->
        <!--public void com.songyan.service.UsrServiceImpl.save() void com.songyan.service.UsrServiceImpl.save() 
            * com.songyan.service.UsrServiceImpl.save() * com.songyan.service.UsrServiceImpl.*() 
            * com.songyan.service.*ServiceImpl.*() * com.songyan.service.*ServiceImpl.*(..) 
            * com.songyan.service..*ServiceImpl.*(..) -->
        <aop:pointcut expression="execution(* com.songyan.service.*ServiceImpl.*(..))" id="pc" />
        <!--给通知 设置切面 -->
        <aop:aspect ref="myadvice">
            <aop:before method="before" pointcut-ref="pc" />
            <aop:after-returning method="after" pointcut-ref="pc" />
            <aop:around method="around" pointcut-ref="pc" />
            <aop:after-throwing method="afterException" pointcut-ref="pc" />
            <aop:after method="after_final" pointcut-ref="pc" />
        </aop:aspect>
    </aop:config>
</beans>

(4)测试

package com.songyan.service;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Demo {
public static void main(String[] args) {
    ApplicationContext applicationContext=new ClassPathXmlApplicationContext("com/songyan/service/beans1.xml");
    UserService userService=(UserService)applicationContext.getBean("userservice");
    userService.delete();
}
}

 将delete里面的代码修改:

    public void before()
    {
        System.out.println("before~~~~~~");
    }

这样在运行的时候就会发生异常,

after-returning 定义的方法就不会运行
after-throwing 定义的方法就会运行
after 不管什么情况都会运行

 

转载于:https://www.cnblogs.com/excellencesy/p/9130675.html

内容概要:该论文聚焦于T2WI核磁共振图像超分辨率问题,提出了一种利用T1WI模态作为辅助信息的跨模态解决方案。其主要贡献包括:提出基于高频信息约束的网络框架,通过主干特征提取分支和高频结构先验建模分支结合Transformer模块和注意力机制有效重建高频细节;设计渐进式特征匹配融合框架,采用多阶段相似特征匹配算法提高匹配鲁棒性;引入模型量化技术降低推理资源需求。实验结果表明,该方法不仅提高了超分辨率性能,还保持了图像质量。 适合人群:从事医学图像处理、计算机视觉领域的研究人员和工程师,尤其是对核磁共振图像超分辨率感兴趣的学者和技术开发者。 使用场景及目标:①适用于需要提升T2WI核磁共振图像分辨率的应用场景;②目标是通过跨模态信息融合提高图像质量,解决传统单模态方法难以克服的高频细节丢失问题;③为临床诊断提供更高质量的影像资料,帮助医生更准确地识别病灶。 其他说明:论文不仅提供了详细的网络架构设计与实现代码,还深入探讨了跨模态噪声的本质、高频信息约束的实现方式以及渐进式特征匹配的具体过程。此外,作者还对模型进行了量化处理,使得该方法可以在资源受限环境下高效运行。阅读时应重点关注论文中提到的技术创新点及其背后的原理,理解如何通过跨模态信息融合提升图像重建效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值