2015-07-21 67 views
0

彈簧應用程序我嘗試setter注入它運作良好。當我寫構造函數注入它失敗。彈簧構造函數注入拋出錯誤

public class Sample { 

    JdbcTemplate jdbcTemplate; 

    public Sample(){ 

    } 

    public Sample(JdbcTemplate jdbcTemplate){ 
     System.out.println("invoked"); 
     this.jdbcTemplate=jdbcTemplate; 
    } 
} 

上下文文件

<bean id="derbyDataSource" 
    class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="${db.driver}" /> 
    <property name="url" 
     value="jdbc:derby:#{systemProperties['user.appdata']}/${db.name};create=true" /> 
    <property name="username" value="${db.user}" /> 
    <property name="password" value="${db.password}" /> 
</bean> 



<!-- JDBC Template Bean --> 
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> 
    <property name="dataSource" ref="derbyDataSource" /> 
</bean> 



<bean id="sample" class="com.exbury.Sample"> 
    <constructor-arg ref="jdbcTemplate"></constructor-arg> 
</bean> 

負載情況下

ApplicationContext context = new ClassPathXmlApplicationContext("derbyDatabaseConfiguration.xml"); 

錯誤

Exception in thread "main" java.lang.IncompatibleClassChangeError: class org.springframework.core.LocalVariableTableParameterNameDiscoverer$ParameterNameDiscoveringVisitor has interface org.springframework.asm.ClassVisitor as super class 
+0

這就是爲什麼我不喜歡春天 – NimChimpsky

+0

你可以嘗試重新編譯項目嗎? –

+0

嘗試了幾次。但不起作用。 – Burusothman

回答

0

Source解決了類似的錯誤。我不確定你的,但你可以嘗試添加這個排除?

<dependency> 
    <groupId>org.springframework.security</groupId> 
    <artifactId>spring-security-web</artifactId> 
    <version>your version</version> 
    <exclusions> 
     <exclusion> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-asm</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency>