大家好我在我的Spring应用程序中使用了AutoWired NamedParameterJdbcTemplate。
@Autowired
NamedParameterJdbcTemplate namedParametersJdbcTemplate;
在我的rest-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的性能拦截器。
所以我在rest-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
所以我提到了这个问题并试图通过使用CGLIB和
来实现第二个解决方案<aop:config proxy-target-class="true" >
不,我收到此错误
无法生成类[class org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate]的CGLIB子类:此问题的常见原因包括使用最终类或不可见类;嵌套异常是java.lang.IllegalArgumentException:Superclass没有null构造函数但没有给出参数
答案 0 :(得分:2)
我有完全相同的错误消息。我使用的是Spring 3.2.5.RELEASE版本。经过调试并试图用PetClinic重复问题的例子出来之后就出现了Spring版本的问题。这个问题在Spring 4.1.1中没有发生。尝试升级,也许它有效。