Spring AOP 创建Advice 基于Annotation

2019-08-09 00:00:00 spring aop 创建

《Spring AOP 创建Advice 基于Annotation》

 

public interface IHello {
  public void  sayHello(String str);
}
public class Hello implements IHello {

	@Override
	public void sayHello(String str) {
		// TODO Auto-generated method stub
	   System.out.println("你好"+str);
	}

}

  

aspectBean.java

import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;

//引入Aspect注解,声明切面
@Aspect
public class aspectBean {
	//定义为切入点
	@Pointcut("execution(* hello.*(..))")
	public void log() {
		
	}
	@Before(value="log()") //在切入点之前执行
	public void startLog()
	{
		System.out.println("开始记录");
	}
	@After(value="log()") //在切入点之后执行
	public void endLog()
	{
		System.out.println("结束记录");
	}
}

  applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
	
	<!-- 启动aspectj -->
	<aop:aspectj-autoproxy/>
	<bean id="apbean" class="com.pb.aspectBean"></bean>
	<bean id="he" class="com.pb.Hello"></bean>
</beans>

  Maintest文件:

public static void main(String[] args) {
		// TODO Auto-generated method stub
        ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
        
        IHello hello=(IHello)context.getBean("he");
        hello.sayHello("访客");
	}

  执行:

《Spring AOP 创建Advice 基于Annotation》

 

相关文章