基于Annotation的Spring AOP: @Before

AspectJ 允许使用Annotation定义切面、切入点和增强处理,而 Spring框架则可识别并根据这些Annotation来生成AOP代理。Spring只是使用了和AspectJ一样的注解,并没有使用AspectJ的编译器和织入器,底层依然使用的是 Spring AOP,依然是在运行时动态生成AOP代理,并不依赖于AspectJ的编译器或者织入器。

为了启用Spring对@AspectJ切面配置的支持,并保证Spring容器中的目标Bean被一个或多个切面自动增强,必须在配置文件中加如下代码:

为了在Spring应用中启动@AspectJ支持,还需要添加 aspectjrt.jaraspectjweaver.jar到工程lib目录下。

基于Annotation的Spring AOP: @Before_第1张图片

Person.java :

public interface Person {
	public String sayHello(String name);
	public void eat(String food);
}
Chinese.java :
@Component
public class Chinese implements Person {

	@Override
	public void eat(String food) {
		System.out.println("我正在吃:"+food);
	}

	@Override
	public String sayHello(String name) {
		return name+"Hello,Spring AOP";
	}

}
BeforeAdviceTest.java :

/**
 * 定义一个切面
 * @author Administrator
 *
 */
@Aspect
public class BeforeAdviceTest {
	
	@Before("execution(* com.bean.*.*(..))")
	public void authority(){
		System.out.println("模拟执行权限检查");
	}
}
bean.xml :



    
    
    
        
    
    
    
    
 
Test.java :

public class Test {
	public static void main(String[] args) {
		
		ApplicationContext ctx=new ClassPathXmlApplicationContext("bean.xml");
		Person p=(Person) ctx.getBean("chinese");
		System.out.println(p.sayHello("张三"));
		p.eat("西瓜");
	}
}
运行控制台输出:





你可能感兴趣的:(Spring)