aspectj 注解

aspectj 注解

public interface ISomeService {
    public void doSome();

    public String dade();
}

public class SomeService implements ISomeService {
    //核心业务
    public void doSome(){
        System.out.println("我们都要找到Java开发工作,薪资6,7,8,9,10K");
    }

    public String dade() {
        System.out.println("==================");
        return "add";
    }

}

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;

/**
 * Created by QiuShao on 2017/7/31.
 */
@Aspect
public class MyAspect {
    /*前置增强*/
    @Before(value = "execution(* *..spring17.*.*(..))")
    public void before(){
        System.out.println("前置增强");
    }

    /*后置增强*/
    @AfterReturning(value = "execution(* *..spring17.*.*(..))")
    public void after(){
        System.out.println("后置增强");
    }
    /*环绕增强*/
    @Around(value = "execution(* *..spring17.*.*(..))")
    public Object around(ProceedingJoinPoint proceed) throws Throwable {
        System.out.println("环绕前");
        Object result=proceed.proceed();
        System.out.println("环绕后");
        if(result!=null){
           return result;
            /*String str=(String)result;
            return str.toUpperCase();*/
        }else {
            return null;
        }
    }
}

配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context.xsd
">
    <!--01.目标对象-->
    <bean id="someService" class="cn.bdqn.spring17.SomeService"></bean>

    <!--02.增强 通知-->
    <bean class="cn.bdqn.spring17.MyAspect"></bean>

    <aop:aspectj-autoproxy/>

</beans>

单侧

 // aspectj 注解
    @Test
    public void test011(){
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContextspring15.xml");
        ISomeService service = (ISomeService) ctx.getBean("someService");
        service.doSome();
        String aa= service.dade();
        System.out.println(aa);

    }

时间: 2024-10-20 07:39:55

aspectj 注解的相关文章

Spring学习--用 ASpectJ 注解实现 AOP

用 AspectJ 注解声明切面: 要在 Spring 中声明 AspectJ 切面 , 只需要在 IOC 容器中将切面声明为 bean 实例.当在 Spring IOC 容器中初始化 AsjectJ 切面之后 , Spring IOC 容器就会为那些与 AspectJ 切面相匹配的 bean 创建代理. 在 ApectJ 注解中 , 切面只是一个带有 @Asject 注解的 Java 类. 通知是标注有某种注解的简单的 Java 方法. AspectJ 支持 5 种类型的通知注解: @Befo

Spring Aop实例之AspectJ注解配置

http://blog.csdn.net/xiaoxian8023/article/details/17285809 上篇博文<Spring Aop实例之xml配置>中,讲解了xml配置方式,今天来说说AspectJ注解方式去配置spring aop. 依旧采用的jdk代理,接口和实现类代码请参考上篇博文.主要是将Aspect类分享一下: [java] view plaincopy package com.tgb.aop; import org.aspectj.lang.JoinPoint;

SSH深度历险(十) AOP原理及相关概念学习+AspectJ注解方式配置spring AOP

AOP(Aspect Oriented Programming).是面向切面编程的技术.AOP基于IoC基础.是对OOP的故意补充. AOP之所以能得到广泛应用,主要是由于它将应用系统拆分分了2个部分:核心业务逻辑(Core business concerns)及横向的通用逻辑,也就是所谓的切面Crosscutting enterprise concerns.比如,全部大中型应用都要涉及到的持久化管理(Persistent).事务管理(Transaction Management).权限管理(P

aspectj注解

public interface ISomeService { public void doSome(); public String dade(); } public class SomeService implements ISomeService { //核心业务 public void doSome(){ System.out.println("我们都要找到Java开发工作,薪资6,7,8,9,10K"); } public String dade() { System.out

Spring学习之旅(七)基于XML配置与基于AspectJ注解配置的AOP编程比较

本篇博文用一个稍复杂点的案例来对比一下基于XML配置与基于AspectJ注解配置的AOP编程的不同. 相关引入包等Spring  AOP编程准备,请参考小编的其他博文,这里不再赘述. 案例要求: 写一个简单的实现四则运算的计算器. 加入AOP功能:日志功能:检测参数中是否有负数的功能. 废话不多说了,直接上代码: (一)基于XML配置: 定义了一个接口类: package com.edu.aop; public interface ArithmeticCalculator { int add(i

spring AOP 编程--AspectJ注解方式 (4)

1. AOP 简介 AOP(Aspect-Oriented Programming, 面向切面编程): 是一种新的方法论, 是对传统 OOP(Object-Oriented Programming, 面向对象编程) 的补充. AOP 的主要编程对象是切面(aspect), 而切面模块化横切关注点. 在应用 AOP 编程时, 仍然需要定义公共功能, 但可以明确的定义这个功能在哪里, 以什么方式应用, 并且不必修改受影响的类. 这样一来横切关注点就被模块化到特殊的对象(切面)里. AOP 的好处:

javaEE之------Spring-----》 AspectJ注解

前面介绍了下Spring中的切面技术.如今说下採用注解的方式进行切面 首先肯定和之前的一样.须要一个自己主动代理的注解类 AnnotationAwareAspectJAutoProxyCreator 配置文件里的代码: <?xml version="1.0" encoding="UTF-8"? > <beans xmlns="http://www.springframework.org/schema/beans" xmlns:x

spring事物管理--声明式(AspectJ)注解实现 (推荐使用)

1.表结构及数据 2.使用的jar包 3.service.Dao层接口与实现类: Dao接口: //转账案例持久层接口 public interface AccountDao { /** * @param out :转出账号 * @param money :转账金额 */ public void outMoney(String out,Double money); /** * @param in :转入账号 * @param money :转账金额 */ public void inMoney(

【Spring】AOP之基于AspectJ注解总结与案例

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka Spring除了支持Schema方式配置AOP,还支持注解方式:使用@AspectJ风格的切面声明.导入需要的包:aspectjweaver.jar.aopalliance-1.0.jar 一.基本使用方法 1.1.启用对@AspectJ的支持 Spring默认不支持@AspectJ风格的切面声明,为了支持需要使用如下配置: <!-- 启动@AspectJ支持 --> <!-- pr