方面没有使用spring bean

时间:2015-03-17 03:21:08

标签: spring aspectj

我正在尝试创建一个简单的方面。 这是我简单的春豆

public class SimpleService {
    public void sayHello(){
        System.out.println("hi");
    }

}

这是我的方面类

@Aspect
public class SimpleAspect {
    @Before("execution(void sayHello())")
    public void entering(){
        System.out.println("entering..");
    }
}

这是我的配置文件

<?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"
    xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
         <aop:aspectj-autoproxy/>
<bean id="service" class="com.schatt.service.SimpleService"></bean>

我的理解是,当我尝试调用SimpleService.sayHello()时,将调用before方面,之后将调用sayHello()。但是方面没有被触发。不能理解我在这里缺少的东西

3 个答案:

答案 0 :(得分:1)

方面需要由Spring创建(为了应用代理)。

<bean id="simpleAspect" class="package-name.SimpleAspect"></bean>

答案 1 :(得分:0)

如果您的课程没有实现任何界面,则必须使用<aop:aspectj-autoproxy proxy-target-class="true"/>

答案 2 :(得分:0)

除了 manish fateddy 所说的内容之外,请注意SimpleService需要成为一个Spring @Component才能生成它适用于Spring AOP。