2014-11-21 100 views
0

大家好我的Spring應用程序我已經使用自動裝配是NamedParameterJdbcTemplate。是NamedParameterJdbcTemplate和CGLIB在Spring AOP

@Autowired 
    NamedParameterJdbcTemplate namedParametersJdbcTemplate; 

在我休息-servlet.xml中

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="java:comp/env/jdbc/mylfrdb"/> 
</bean> 
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> 
     <constructor-arg ref="dataSource"/> 
    </bean> 
<bean class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate" id="namedParameterJdbcTemplate"> 
    <constructor-arg ref="jdbcTemplate"></constructor-arg> 

</bean> 

<bean class="org.springframework.jdbc.core.simple.SimpleJdbcCall" id="simpleJdbcCall"> 
    <constructor-arg ref="dataSource"></constructor-arg> 
</bean> 

它做工精細。不,我不得不使用Spring AOP的性能攔截器。

,所以我說以後的事在我休息-servlet.xml中

<aop:config > 

<aop:pointcut expression="@target(org.springframework.stereotype.Service)" id="allServices"/> 

<aop:advisor pointcut-ref="allServices" advice-ref="perfMonitor"/> 


</aop:config> 

,所以我得到的錯誤是這樣的。 無法設置org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate場com.lfr.dao.impl.FlatAdvertiseDaoImpl.namedParametersJdbcTemplate到com.sun.proxy。$ Proxy15

所以我refered這個問題,並試圖實現第二解決方案給的是通過使用CGLIB和

<aop:config proxy-target-class="true" > 

不,我得到這個錯誤

無法生成類的子類CGLIB [類org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate]:常見的原因,這問題包括使用最終課堂或不可見課堂;嵌套的例外是java.lang.IllegalArgumentException異常:超類,沒有空的構造函數,但沒有參數分別給予

回答

2

我有完全相同的錯誤消息。我使用的是Spring 3.2.5.RELEASE版本。經過調試並試圖重複PetClinic例子出現的問題,這是Spring版本的問題。這個問題在Spring 4.1.1中沒有發生。嘗試升級,也許它工作。

+0

是的,它是彈簧3.0 – 2014-11-26 14:57:11