【发布时间】:2018-01-18 09:53:52
【问题描述】:
在使用 Scala 编写 spring-boot 应用程序时,我遇到了如何将 ConfigurationProperties 注入到配置类的问题。
我试过这样的代码:
@Configuration
class Config @Autowired() (var properties: MessagePathProperties)
但是发生了异常:
Caused by: java.lang.NoSuchMethodException: configuration.Config$$EnhancerBySpringCGLIB$$c8875845.<init>()
我也试过这样的代码:
@Configuration
class Config {
@Autowired private var properties: MessagePathProperties = _
...
}
应用本身正常启动,但我发现properties在Config中为null。
同时,我尝试将属性注入到服务类中,例如:
@Service
class MessageService @Autowired() (var properties: MessagePathProperties)
properties 在 MessageService 类中正常工作。
所以,我不知道@Configuration 和@Service 之间有什么区别会产生不同的效果。
顺便说一句,这是我的应用类作为参考:
@SpringBootApplication
@EnableAutoConfiguration
@EnableConfigurationProperties
class ScalaServiceApplication
object Launch extends App {
SpringApplication.run(classOf[ScalaServiceApplication], args :_ *)
}
【问题讨论】:
-
将spring放入垃圾袋,使用scalaimplicits insead
-
谢谢你的回复,伊戈尔。但是请您提供一些代码吗?我是 scala 的新生...
-
首先阅读 Martin Odersky,Lex Spoon Programming Scala,关于隐含。 scala 语言的这一特性难以理解,但非常强大,并且可以直接替换所有“DI”框架,无需任何注释。 2.示例
标签: java spring scala spring-boot