Java 如何在不从aop:aspect引用的情况下实例化Springbean

Java 如何在不从aop:aspect引用的情况下实例化Springbean,java,spring,Java,Spring,使用Spring和Java 我有一个切入点,效果不错。现在,我想从spring中删除切入点和AOP,并用java代码中的事件触发事件,但我希望“myAdvice”bean仍然通过spring及其属性集调用 我想摆脱所有的建议,即使是java代码,没有更多的建议或任何AOP的痕迹,我已经有了一个很好的事件系统工作我只想通过Spring实例化我的bean 当我删除第二个代码块(一个以“aop:config”开头)时,我注意到bean“myAdvice”不再被调用和实例化。如果不从“aop:aspec

使用Spring和Java

我有一个切入点,效果不错。现在,我想从spring中删除切入点和AOP,并用java代码中的事件触发事件,但我希望“myAdvice”bean仍然通过spring及其属性集调用

我想摆脱所有的建议,即使是java代码,没有更多的建议或任何AOP的痕迹,我已经有了一个很好的事件系统工作我只想通过Spring实例化我的bean

当我删除第二个代码块(一个以“aop:config”开头)时,我注意到bean“myAdvice”不再被调用和实例化。如果不从“aop:aspect”中引用它,我怎么能称它为set属性呢

在我的应用程序上下文中

<bean id="myAdvice" class="com.myclass">
    <property name="name1" ref="ref1" />
    <property name="name2" ref="ref2" />        
</bean>


<aop:config proxy-target-class="true">
    <aop:aspect id="myAspect" ref="myAdvice">
        <aop:pointcut id="myPointcut" expression="execution(* com.myexcmethod" />
        <aop:around pointcut-ref="myPointcut" method="invoke" />
    </aop:aspect>
</aop:config>

如果希望能够获取bean本身,可以将其传递到以下函数中:

public static Object unwrapProxy(Object proxiedBean) throws Exception {
    while(proxiedBean instanceof Advised) {
        proxiedBean = ((Advised) proxiedBean).getTargetSource().getTarget();
    }

    return proxiedBean;
}

请注意,为了确保打开所有AOP通知,您需要使用循环。

您的配置看起来很好。加载ApplicationContext时,应该将bean实例化为单例bean。也许您需要检查是否有一个默认的lazy init设置,该设置可以防止急于加载bean。

什么是
scope=“consultation”
?你能删除它吗?bean的名字是
myAdvice
不是
myClass
谢谢,但是我想去掉所有的advice,即使是在java代码中,没有更多的advice或任何AOP的痕迹,我有一个很好的事件系统在工作。我只需要通过spring实例化我的bean。