今天在用spring配合scala时,遇到了一个关于@Autowired的问题,主要报错信息如下:
Caused by: java.lang.NoSuchMethodException: com.zk_chs.xxxxx.....<init>() at java.lang.Class.getConstructor0(Class.java:3082) ~[na:1.8.0_73] at java.lang.Class.getDeclaredConstructor(Class.java:2178) ~[na:1.8.0_73] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:80) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] ... 52 common frames omitted
根据报错信息来看的话,是因为构造函数的问题,那么,一定是scala编译时做了我们不知道的修改。我的代码:
/** * Created by zk_chs on 16/4/12. */ @Configuration @EnableTransactionManagement class MyBatisConfig @Autowired() (dataSource: DataSource) extends TransactionManagementConfigurer{ @Bean override def annotationDrivenTransactionManager : PlatformTransactionManager = { new DataSourceTransactionManager(dataSource) } omitted...... }
在这里,我们的scala类在构造对象时,需要传入DataSource,这里采用了@Autowired,然后就会发生上面的错误,但是,如果在@Configuration中没有添加@Bean注解的话,那么又不会发生报错,例如下面的代码:
/** * Created by zk_chs on 16/4/12. */ @Service class ApService @Autowired() (private val apMapper: ApMapper) { def getById (id: Int) = { apMapper selectByPrimaryKey id } }
虽然不知道为什么,但是解决方式还是找到了,如果读者有兴趣的话,可以自己反编译生成的class文件,到时候找到原因分享给大家。这里可以使用如下方式对DataSource进行定义:
@Configuration @EnableTransactionManagement class MyBatisConfig extends TransactionManagementConfigurer{ @Autowired private val dataSource: DataSource = null @Bean override def annotationDrivenTransactionManager : PlatformTransactionManager = { new DataSourceTransactionManager(dataSource) } omitted...... }
我们将dataSource变成类的属性,而不是构造函数的参数,val和var都可以,但都需要初始化,这样一来,便能解决掉构造函数的问题了。
相关推荐
NULL 博文链接:https://keriny.iteye.com/blog/906440
SpringBoot + SpringData Jpa + Scala + Mysql(java+Scala混编)
原始用的jetty做的http接口,最近有时间,研究了下spring boot + scala + spark做大数据计算
本txt文档内存有链接,为码云的链接,可使用git进行下载,内容已有一些书籍,包含spring,node,scala,已有scala编程实战,spring编程,node编程,以及我自己学习Elasticsearch的一些经验,欢迎大家下载与在此链接...
大数据炒的越来越火了,我也学一下,今天搞定第一个程序,环境是Windows10系统,JDK9,IntelliJ Idea,安装scala-2.12.4,开发第一个scala程序
自己学习scala语言写的一个单词计数的例子,很好的用到了函数式编程思想,分享给大家共同学习。
本文详细的介绍了scala的基础语法,如果你是一个入门者有没有一个很好的资料为建议你下载
标量Scala中心的网站基础设施该网站是使用GitHub Pages和Jekyll构建和托管的。本地建筑使用Docker Compose 您需要在计算机上安装npm和Docker Compose。 npm installnpm run bower-installdocker-compose up生成的...
很大篇幅都放在,使用scala实现scala默认库文件的API中,通过对简单的函数式编程逻辑的介绍和实践,主要是实践,建立起来一个比较明晰的scala思维模式,或者叫函数式编程的思维模式。 2 无副作用的函数式编程,同时...
scala是一个经典的语言,Scala代表了一个新的语言品种,它抹平了这些人为划分的界限。但是现在scala的相关学习资料不多,因此,本人总结了几篇写的较好的scala学习资料,包含<ScalaQuery_Commerzbank_2011><twitter-...
scala的小例子一个简单的例子有一点小帮助
scala-2.12.3 scala-2.12.3 scala-2.12.3 scala-2.12.3
在Scala中结合使用Spring Boot的基本指南 将JDK版本更新为1.8,以使用Lambda 动作可以返回rx.Observable,就像返回Callable或DeferredResult一样,请参见RxJavaController 当控制器返回Callable / DeferredResult ...
此文档是讲解实战Scala,希望对喜欢大数据的同学有所帮助!!! 学习Scala语言,不仅仅意味着熟悉新的API,更重要的是...对于Scala新手来说这是一本不错的入门书,对于老手来说也是一本夯实基础,检视自己所学知识的好书。
scala 编译工具 sbt 安装包。 Little or no configuration required for simple projects Scala-based build definition that can use the full flexibility of Scala code Accurate incremental recompilation ...
这篇文章是Scala方面的,scala的windows安装,scala的linux安装,以及第一个scala程序
这是一个简单实用的scala集成mybatis数据库查询代码,简单明了
本书共分为 4 个部分:第一部分详细介绍 Scala 的一些基础知识,并和 Java 中的相关概 念进行了参照,方便读者快速上手 Scala;第二部分进一步介绍 Scala 的一些中级知识,以及 与 Java 的一些差异点,方便读者编写...
Scala语法简明教程.pdf