在@ComponentScan中使用多个路径不起作用

时间:2019-11-12 03:12:50

标签: spring-boot kotlin

在组件扫描中使用多路径时遇到问题。我从这里How to scan multiple paths using the @ComponentScan annotation?尝试了解决方案,但这给了我错误。

enter image description here

它说

  

意外的标记(使用';'分隔同一行中的表达式)

我正在使用Kotlin和Intellij IDE。

3 个答案:

答案 0 :(得分:0)

嘿,在科特林中,我发现@ComponentScan有点棘手。 这是我的用法,希望它与您的情况相符:

要指定基本程序包类:

@ComponentScan(
basePackageClasses = [com.tx.loader.Example1::class, com.tx.common.Example2::class])
)

或使用此名称指定软件包名称:

@ComponentScan(
    basePackages = ["com.tx.loader", "com.tx.common"]
)

或者您可以将其与用于服务或组件的过滤器一起测试以仅自动连接所需的内容:

import org.springframework.context.annotation.ComponentScan
import org.springframework.stereotype.Component
import org.springframework.stereotype.Service

@ComponentScan(
    includeFilters = [ComponentScan.Filter(Service::class), ComponentScan.Filter(Component::class)],
)

答案 1 :(得分:0)

在Kotlin中,您不使用{}进行数组声明,而应使用[]。在您的特殊情况下,您还可以使用简化的符号

@ComponentScan("com.tx.loader", "com.tx.common")

或传统(“ basePackages”或“ value”在注释中似乎同样起作用):

@ComponentScan(basePackages = ["com.tx.loader", "com.tx.common"])

答案 2 :(得分:0)

这个解决了我的问题
将其放在main函数

上方
@SpringBootApplication
@ComponentScan(basePackages = ["com.*"])
fun main(...) {...}