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 "";
}
切面类
@Aspect
public 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");
}
}
切面使用
@Service
public class ServiceInfo {
@InfoAop()
public void info(){
System.out.print("info function");
}
}