spring 注解方式实现aop

来源:互联网 发布:建筑三维制图软件 编辑:程序博客网 时间:2024/05/22 15:20

spring xml配制

 <context:component-scan base-package="com.meizu.spring.controller,com.meizu.spring.service,com.meizu.spring.annotation_aop" >        <context:include-filter type="annotation" expression="org.aspectj.lang.annotation.Aspect" />    </context:component-scan>    <!-- Configures the @Controller programming model -->    <!-- annotation-driven 扫描指定包中类上的注解 -->    <mvc:annotation-driven />    <!-- 通过cblib去生成代理类 -->    <aop:aspectj-autoproxy proxy-target-class="true"/>

注解类

@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.METHOD})public @interface InfoAop {    String name() default "";}

切面类

@Aspectpublic class InfoAopIml {    @Before("@annotation(infoAop)")    public void before(InfoAop infoAop) throws Throwable {        System.out.print("before");    }    @Around("@annotation(infoAop)")    public void around(ProceedingJoinPoint proceedingJoinPoint, InfoAop infoAop) throws Throwable {        System.out.print("around before");        proceedingJoinPoint.proceed();        System.out.print("around after");    }    @After("@annotation(infoAop)")    public void after(InfoAop infoAop) throws Throwable {        System.out.print("after");    }}

切面使用

@Servicepublic class ServiceInfo {    @InfoAop()    public void info(){        System.out.print("info function");    }}
0 0
原创粉丝点击