在spring,struts 均配置成功,使用其他方式配置AOP能正常运行的前提下。
我修改了一下配置方式,使用<aop:config>标签。
具体的配置文件如下
<bean id="userDao" class="hibernate.dao.UserDAO" />
<bean id="im"
class="com.seine.bomsheet.test.com.seine.bomsheet.test.ImpTest">
<property name="ua" ref="userAction" />
</bean>
<bean id="userAction" class="com.seine.struts.action.UserAction">
<property name="udao" ref="userDao"/>
<property name="im" ref="im"/>
</bean>

<bean id="tran" class="com.seine.aop.TestTransaction"/>
<aop:config>
<aop:aspect id="tranLog" ref="tran">
<aop:before pointcut="execution(* com.seine.struts.action.UserAction.*(..))" method="before"/>
<aop:after pointcut="execution(* com.seine.struts.action.UserAction.*(..))" method="after"/>
</aop:aspect>
</aop:config>
<bean name="/login" parent="userAction" />在页面通过login.do进入系统时,正确进行登陆,但是没有运行添加的aop。使用相同的配置,使用main函数测试的时候,通过context.getBean("userAction")获得bean,然后调用该对象的某个方法,aop能运行正常。请问这是为什么呢,struts部分有什么问题,求解求解求解·····

解决方案 »

  1.   

    现在又遇到一个问题,求解······我在配置文件中存在一个advisor。
    <bean id="testFlowControlPointcut"
    class="org.springframework.aop.support.ControlFlowPointcut">
    <constructor-arg
    value="com.seine.bomsheet.test.com.seine.bomsheet.test.ImpTest" />
    </bean>
    <bean id="testflowAdvisor"
    class="org.springframework.aop.support.DefaultPointcutAdvisor">
    <property name="advice" ref="logAftermethod" />
    <property name="pointcut" ref="testFlowControlPointcut" />
    </bean>在没有使用aop 标签且没有设置自动代理的时候没有问题,
    但是在使用了aop标签后,框架自动给一些不相干的bean添加了代理,导致系统初始化失败。
    请问怎么解决这个问题。