Scala spring boot autowiring不起作用

时间:2017-03-14 19:27:13

标签: java scala spring-boot autowired

我正在尝试使用弹簧启动和scala。 虽然我已经能够使用CommandLineRunner来引导它,但我无法自动装配其他scala bean。以下是代码: -

import com.service.UtilService
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.{CommandLineRunner, SpringApplication}


@SpringBootApplication
class ScalaMain (@Autowired util:UtilService) extends CommandLineRunner{

  override def run(args: String*): Unit = {
    println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
    util.sayHello
  }
}
object ScalaMain {
  def main(args: Array[String]): Unit = {
    SpringApplication.run(classOf[ScalaMain]);
  }
}

这是服务类,将自动装入上述类

import org.springframework.stereotype.Service

@Service
class UtilService {

  def sayHello = println("A hello from utilService")
}

当我运行gradle任务“gradle clean bootRun”时,我收到以下错误

APPLICATION FAILED TO START
***************************

Description:

Parameter 0 of constructor in com.bhargo.bootstrap.ScalaMain required a bean of type 'com.bhargo.service.UtilService' that could not be found.


Action:

Consider defining a bean of type 'com.bhargo.service.UtilService' in your configuration.

这里有什么问题?任何帮助都非常感谢。

谢谢,

阿玛尔

2 个答案:

答案 0 :(得分:1)

我遇到了这个问题,在使用java时这样做了,但是在使用scala时有点忘了。问题是用于引导的类不在我使用@Service注释创建其bean的其他类的父包中。我更改了包结构,现在它就像一个魅力!!!!!

答案 1 :(得分:0)

您缺少文件中的包声明。确保你有

package com.bhargo.bootstrap

位于服务类文件的顶部