<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.7</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.7</version>
</dependency>
``
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyTrans {
}
@Component
public class Hello implements IHello {
@MyTrans
@Override
public void sayHello(String name) {
System.out.println("hello world-" + name);
}
}
@Aspect
@Component
public class TransAspect {
@Around(“@annotation(com.fd.annotation.MyTrans)”)
public Object around(ProceedingJoinPoint pjp) throws Throwable {
System.out.println(“前置”);
Object o = pjp.proceed();
System.out.println(“后置”);
return o;
}
}
<aop:aspectj-autoproxy />
<context:component-scan base-package="com.fd"></context:component-scan>
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("main.xml");
IHello helo = context.getBean(IHello.class);
helo.sayHello("fudong");
}