Java Spring AOP-切入点未触发

Java Spring AOP-切入点未触发,java,spring,spring-aop,Java,Spring,Spring Aop,在我的项目中,我刚刚开始使用SpringAOP,在让SpringAOP正常工作方面遇到了一些问题 我有两个对象,TransportImpl和SessionImpl,我想通过AOP分析它们。这两个对象(bean)都是通过Spring初始化的。这两个bean都是业务的实现 接口(传输和会话)。我可以让应用于TransportImpl bean的方面很好地工作,但是那些应用于SessionImpl的方面就不能启动。我可以确认 “mySessionMonitor”方面由Spring初始化,Session

在我的项目中,我刚刚开始使用SpringAOP,在让SpringAOP正常工作方面遇到了一些问题

我有两个对象,TransportImpl和SessionImpl,我想通过AOP分析它们。这两个对象(bean)都是通过Spring初始化的。这两个bean都是业务的实现 接口(传输和会话)。我可以让应用于TransportImpl bean的方面很好地工作,但是那些应用于SessionImpl的方面就不能启动。我可以确认 “mySessionMonitor”方面由Spring初始化,SessionImpl对象也在初始化时没有任何异常或错误

我已经将切入点和方面剥离为最基本的形式。我本以为会出现下面描述的切入点会话操作 初始化SessionImpl bean并调用init方法initialise时激发。但这种情况从未发生过。这里可能出了什么问题

从配置文件:

<bean id="MyTransport" class="my.app.transport.TransportImpl"   scope="singleton" />                
<bean id="MySession" class="my.app.session.SessionImpl" init-method="initialise" scope="singleton" />

<aop:aspectj-autoproxy proxy-target-class="true">
    <aop:include name="myTransportMonitor" />
    <aop:include name="mySessionMonitor" />
</aop:aspectj-autoproxy>

<bean id="myTransportMonitor" class="my.app.aspects.TransportMonitoringAspect"/>
<bean id="mySessionMonitor"   class="my.app.aspects.SessionMonitoringAspect" />

我希望
initialise()
方法不是
my.app.session.SessionImpl
的一部分。如果是这样的话,
initialise()
方面的方法将不会触发。因为您不能从bean类调用方面的方法。否则,请附加
my.app.session.SessionImpl
代码以了解详细信息。

我个人更喜欢将方面切入点配置放在应用程序上下文中,而您缺少aop:Aspect中的ref

 <bean id="mySessionMonitor"   class="my.app.aspects.SessionMonitoringAspect" />

 <aop:config proxy-target-class="true">
  <aop:aspect ref="mySessionMonitor">
   <aop:pointcut id="around" expression="execution (public * *(..))"/></aop:pointcut>
   <aop:around pointcut-ref="around" method="aroundAdvice"/>
  </aop:aspect>
 </aop:config>


如果您更喜欢基于注释的配置,请参阅我写的。XML配置中需要的只是

@Brain:。。。。。。。。你能给我解释一下这两行吗。。。。我也有一个类似的问题想在我的情况下使用你的代码。。。但我不明白上面的两行。。。。。。谢谢你,伙计…aop:pointcut属性指定了建议应该在何处插入的表达式。id是您给它的名称,然后在aop:around行中使用,并定义它应该在@Aspect中运行的方法。
 <bean id="mySessionMonitor"   class="my.app.aspects.SessionMonitoringAspect" />

 <aop:config proxy-target-class="true">
  <aop:aspect ref="mySessionMonitor">
   <aop:pointcut id="around" expression="execution (public * *(..))"/></aop:pointcut>
   <aop:around pointcut-ref="around" method="aroundAdvice"/>
  </aop:aspect>
 </aop:config>