Spring上托管JSF bean的AOP

时间:2013-01-17 22:17:19

标签: spring jsf aop

我正在尝试在Spring托管的JSF Beans上应用AOP,但出于某种原因,只要我应用AOP,JSF就会抛出MethodNotFoundException。

这是我的代码: 的 Web.xml中

<application>
<default-render-kit-id>org.apache.myfaces.trinidad.core</default-render-kit-id>
<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>    
</application>

的applicationContext.xml

 <?xml version="1.0" encoding="UTF-8"?>
 <beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:security="http://www.springframework.org/schema/security"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:aop="http://www.springframework.org/schema/aop"
 xmlns:tx="http://www.springframework.org/schema/tx"
 xsi:schemaLocation="http://www.springframework.org/schema/beans    
 http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
 http://www.springframework.org/schema/aop  
 http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
 http://www.springframework.org/schema/tx  
 http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">

<aop:aspectj-autoproxy/>
 <bean id="loginAuditAspect" class="com.test.mobile.service.LoginAuditManagementAspect">
 <constructor-arg index="0">
<list>
<bean class="com.test.mobile.service.LoginAuditableResourceResolver" />
<bean class="com.test.mobile.service.LoggedInAuditableResourceResolver" />
<bean class="com.test.mobile.service.NavigationAuditableResourceResolver" />
</list>
</constructor-arg>
</bean>

   <bean id="loginService" class="com.test.mobile.service.MLoginServiceImpl" />  
   <bean id="memberService" class="com.test.mobile.service.MMemberServiceImpl" 
         scope="session">
    <property name="thpContext" ref="thpContext"></property>
    </bean> 

  <bean id="mMemberProfileBean" class="com.test.mobile.service.MMemberProfileBean" 
        scope="session">
  <property name="memberService" ref="memberService"></property>
  </bean>

  <bean id="testBean" class="com.test.mobile.service.TestBean" scope="session">
  </bean>
  </beans>

支持Bean:

 public class TestBean extends BaseBackingBean {
   private static final long serialVersionUID = 1L; 

   @Auditable(resourceName="LoggedIn",      
 resourceResolverClass=com.test.mobile.service.LoggedInAuditableResourceResolver.class)
public String getXxx() {

    return null;
}

}

有人可以帮助我在Spring托管的JSF bean上应用AOP逻辑

1 个答案:

答案 0 :(得分:0)

您应该至少发布一些有关堆栈跟踪和方面的信息。但是,如果你正在丢失方法,只需使用aspetct尝试:

<aop:aspectj-autoproxy proxy-target-class="true"/>

使用CGLIB代替类代替jdk代理(仅代理接口)。