`

spring aop编程——基于注解

 
阅读更多
spring aop编程——基于注解开发
基于注解
1、实现类
   @Service("userService")
public class UserServiceImpl implements UserService{
public void addUser() {
System.out.println("addUser............");
}
public void updateUser() {
System.out.println("updateUser...........");
}
public void deleteUser() {
int a=10;
int b;
b=a/0;
System.out.println("deleteUser.............");
}
public String findUser() {
System.out.println("findUser.............");
return "张三";
}
}
2、切面类
   @Component()
    @Aspect

    public class MyAspect {
// 前置通知
       // @Before(value="execution(*
                         cn.ithuplion.spring_aop_anno.UserServiceImpl.*(..))")
public void myBefore() {
System.out.println("开启事务..........");
}
//声明公共切入点
@Pointcut(value="execution(*
                  cn.ithuplion.spring_aop_anno.UserServiceImpl.*(..))")
private void myPointcut(){
}
// 后置通知
//@AfterReturning(value="myPointcut()",returning ="o")
public void myAfterReturning(Object o) {
System.out.println("提交事务..........."+o);
}

// 环绕通知
//@Around(value="myPointcut()")
public Object myAround(ProceedingJoinPoint joinPoint) throws Throwable {
System.out.println("开启事务..........");
// 手动执行目标方法
Object obj = joinPoint.proceed();
System.out.println("提交事务...........");
return obj;
}

// 抛出异常通知
//@AfterThrowing(value="myPointcut()",throwing="t")
public void myAfterThrowing(Throwable t) {
System.out.println("抛出异常通知..........." + t.getMessage());
}

// 最终通知
        //@After(value = "execution(*
                  cn.ithuplion.spring_aop_anno.UserServiceImpl.*(..))")
public void myAfter() {
System.out.println("最终通知..............");
}
   }


3、Spring配置  
     <!-- 1.扫描 注解类 -->
    <context:component-scan base-package="cn.ithuplion.spring_aop_anno">
    </context:component-scan>
    <!-- 2.确定 aop注解生效 -->
    <aop:aspectj-autoproxy></aop:aspectj-autoproxy>


4、测试
   @Test
   public void test1(){
     ApplicationContext applicationContext=new
     ClassPathXmlApplicationContext("cn/ithuplion/spring_aop_anno/bean.xml");
UserService userService = (UserService)
                applicationContext.getBean("userService");
userService.addUser();
userService.updateUser();
userService.deleteUser();
userService.findUser();
}

5、Aop注解总结
     @Aspect  声明切面,修饰切面类,从而获得 通知。
     通知
@Before 前置
@AfterReturning 后置
@Around 环绕
@AfterThrowing 抛出异常
@After 最终
    切入点
       @PointCut ,修饰方法 private void xxx(){}  之后通过“方法名”获得切入点引用
分享到:
评论

相关推荐

    五、Spring源码分析——Spring Aop

    在深入探讨Spring AOP之前,我们先要理解AOP(面向切面编程)的基本概念。AOP是一种编程范式,它将关注点分离,使得我们可以将横切关注点(如日志、事务管理、安全检查等)与业务逻辑解耦。在Spring框架中,AOP主要...

    Spring 入门案例——AOP

    Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来实现横切关注点,如日志、事务管理、性能监控等。本入门案例将帮助你理解并掌握Spring AOP的基本概念和使用方法。 在...

    征服Spring AOP—— Schema

    本文将深入探讨“Spring AOP——Schema”,这是Spring AOP的一种配置方式,通过XML schema定义切面和通知。 首先,我们需要理解AOP的基本概念。面向切面编程是一种编程范式,旨在提高软件的模块化程度,将关注点...

    征服Spring AOP—— @AspectJ

    在IT行业中,Spring框架是Java企业级应用开发的首选,而Spring AOP(面向切面编程)则是其核心特性之一,用于实现横切关注点的模块化,如日志、事务管理等。@AspectJ是Spring AOP的一种注解驱动方式,它极大地简化了...

    spring aop依赖jar包

    现在,我们回到主题——"springaop依赖的jar包"。在Spring 2.5.6版本中,使用Spring AOP通常需要以下核心jar包: - `spring-aop.jar`:这是Spring AOP的核心库,包含了AOP相关的类和接口。 - `spring-beans.jar`:...

    Spring aop 性能监控器

    尤其是`org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator`和`org.springframework.aop.aspectj.AspectJExpressionPointcut`这两个类,它们分别处理了基于注解的切面创建和切入点...

    spring-aop-jar

    "spring-aop-jar"这个主题涉及到Spring框架中的核心组件之一——Spring AOP。这里我们将深入探讨Spring AOP、相关jar文件以及它们在实际开发中的作用。 首先,我们来看一下提供的文件: 1. aopalliance.jar:这是一...

    spring-aop.jar

    《深入解析Spring AOP框架——以spring-aop.jar为例》 Spring AOP,全称Aspect Oriented Programming(面向切面编程),是Spring框架的核心部分之一,它为Java开发者提供了强大的面向切面的编程能力。本文将围绕...

    spring之AOP(动态代理)

    在Spring框架中,AOP(面向切面编程)是一种强大的设计模式,它允许开发者将关注点分离,将横切关注点(如日志、事务管理、权限检查等)与核心业务逻辑解耦。AOP的核心概念是切面、通知、连接点、切入点和织入。在...

    使用SpringAop使用Oracle数据权限控制

    Spring AOP(面向切面编程)是一个强大的工具,常用于实现业务逻辑中的横切关注点,如日志、事务管理以及我们的案例——数据权限控制。本篇将深入探讨如何结合Spring AOP和Oracle数据库来实现精细化的数据权限控制。...

    Spring开发指南——中文版

    - Spring支持基于代理的AOP和基于注解的AOP。 4. **IoC容器** - IoC容器是Spring的基石,负责管理对象的生命周期和对象之间的依赖关系。 - 容器通过读取配置元数据(XML、注解或Java配置类)来创建和管理Bean。 ...

    springAOP-dome

    在这个名为"springAOP-dome"的实例中,我们将探讨如何利用Spring AOP实现一个简单的日志记录功能,以作为入门学习。 首先,了解AOP的基本概念是必要的。面向切面编程是一种编程范式,旨在解决程序中的横切关注点,...

    Spring——aop

    - **基于注解的AOP**:在Spring 2.5之后引入,无需编写XML配置,直接在方法上使用注解如`@Before`, `@After`, `@Around`, `@AfterThrowing`等定义通知。 ### 3. Spring AOP的核心组件 - **`@Aspect`**:标记一个类...

    9Spring AOP 盗梦空间之四——Around

    在Spring框架中,AOP(面向切面编程)是一种强大的设计模式,它允许开发者将关注点分离,将横切关注点(如日志、事务管理、安全检查等)与核心业务逻辑解耦。"9Spring AOP 盗梦空间之四——Around"这个标题暗示我们...

    7Spring AOP盗梦空间之二——获得返回值AfterReturnning

    同时,结合提供的压缩包文件"Spring_AOP_Annotation",可以进一步探索Spring AOP的注解式编程,深入了解如何在实际项目中应用这些概念。 总的来说,Spring AOP的AfterReturning通知是实现方法执行后处理的关键工具...

    SpringAOP测试Demo

    在"SpringAOP测试Demo"中,我们通常会涉及以下几个核心概念和操作: 1. **切面(Aspect)**:切面是关注点的一个模块化,它包括了连接点、通知、目标对象、织入和引入。在Spring AOP中,切面通常由一个或多个注解的...

    spring 2.0使用AOP实例(基于Annotation的配置方式)

    Spring 2.0引入了基于注解的AOP配置,极大地简化了AOP的使用。这篇博客文章将探讨如何在Spring 2.0中使用AOP实例,特别是通过注解来实现。 首先,我们需要了解AOP的基本概念。AOP的核心是切面(Aspect),它封装了...

    Java进阶之SpringAOP源码深度剖析共17页.pd

    此外,Spring AOP还提供了强大的表达式语言——AspectJ的LTW(Load-Time Weaving),它允许在程序加载时进行切面的编织,无需修改现有代码,增加了灵活性。LTW的配置通常需要额外的类加载器支持,如AspectJ Weaver ...

Global site tag (gtag.js) - Google Analytics