Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java代码中的Scala使用Spring而不使用默认构造函数_Java_Spring_Scala_Spring Mvc - Fatal编程技术网

Java代码中的Scala使用Spring而不使用默认构造函数

Java代码中的Scala使用Spring而不使用默认构造函数,java,spring,scala,spring-mvc,Java,Spring,Scala,Spring Mvc,我需要用java项目中使用的SpringMVCXML实例化一个scala类。Scala代码正在替换一个旧的java类,因为某些Scala框架和编写fork连接池所需的代码量较大,实际上比Scala中效率更低。有没有一种不用构造函数参数来实例化类的方法?我该怎么做?基本上,我如何让Spring识别没有定义构造函数的Scala类 目前,我知道我可以这样定义一个类: class MyClass(@BeanProperty var va:String){ } 使用构造函数arg,如: <con

我需要用java项目中使用的SpringMVCXML实例化一个scala类。Scala代码正在替换一个旧的java类,因为某些Scala框架和编写fork连接池所需的代码量较大,实际上比Scala中效率更低。有没有一种不用构造函数参数来实例化类的方法?我该怎么做?基本上,我如何让Spring识别没有定义构造函数的Scala类

目前,我知道我可以这样定义一个类:

class MyClass(@BeanProperty var va:String){

}
使用构造函数arg,如:

<constructor-arg ref="va">MyValue</constructor-arg>
我想使用一个属性,例如:

<property name="va">value</property>

有办法做到这一点吗?到目前为止,我已经尝试将@Component甚至@Autowired添加到我的类中。查看Scala bean,我没有找到创建默认构造函数的注释。

正如其他人在他们的评论中所指出的,您应该能够在Scala中定义第二个无参数构造函数:

class MyClass(@BeanProperty var va: String) {
  def this() {
    va = null
  }
}
我不能100%确定Spring是否因为不得不像Guice有时那样从多个构造函数中进行选择而感到恼火,但我猜如果你不给它任何构造函数参数,它应该在Scala类中找到这个默认构造函数并使用它,然后是由
@BeanProperty
公开的公共setter

我怀疑,如果Spring看不到默认构造函数,那么Scala和Java之间的编译器顺序就会出现问题,正如其他人所指出的


也就是说,另一种解决方法是使用静态工厂方法创建一个静态Java工厂类,该方法只调用您在注释中指出的默认构造函数,该构造函数可以从Java调用,但不能从Spring中找到。Spring应该能够找到静态Java工厂类并调用工厂方法。这在Spring配置中很容易指定。我不确定您是否受限制而无法使用它,但我想将其作为另一种方法与大家分享。

classmyclass{
应该会导致一个没有默认参数构造函数的类,这就是问题所在。构造函数似乎只在类名后面出现参数。我正在试图找到一种方法来创建一个默认构造函数,而不存在不安全、内存不成功等情况。有点像@BeanProperty生成getter和setter。Java类不能有即使通过scala生成,也没有构造函数。仍应为true@AndrewScottEvans根据您的标准,这种构造函数在java中会是什么样子?在Scala中,定义这种构造函数是非常标准的,因为它们正在被转换成您可能更熟悉的构造函数建议您使用
classmyclass{@BeanProperty var va:String=null}发布确切的项目
在GitHub上,为了更清楚地了解发生了什么,否则我们无能为力。我正在努力找出原因,但有些东西被破坏了,直到几次运行之后,我猜是缓存?我才发现。我将在明天修复此问题,并接受答案,可能会删除整个内容。谢谢。我最终不得不重建e整个项目。为了方便起见,我还将所有依赖项移到了Maven,这并不是真正的需求,但有帮助(尤其是启用了详细性的构建过程)。感谢您的帮助。辅助构造函数必须调用主构造函数,因此本例不编译
No default constructor found
class MyClass(@BeanProperty var va: String) {
  def this() {
    va = null
  }
}