首页
学习
活动
专区
圈层
工具
发布

考特林
EN

Stack Overflow用户
提问于 2019-04-30 09:17:57
回答 1查看 3.9K关注 0票数 0

我以前问过这个问题,但从来没有任何有意义的答案。

如果ServiceClass在java spring中使用@Service进行注释,我可以这样做。

代码语言:javascript
复制
@Autowired
private ServiceClass serviceClass;

或者更好

代码语言:javascript
复制
private final ServiceClass serviceClass;

public userManagementClass(ServiceClass serviceClass) {
        this.serviceClass = serviceClass;
    }

然后我换了kotlin然后..。

代码语言:javascript
复制
@Autowired
private lateinit var addressRepository: AddressRepository

在AddressRepository中使用@Repository进行注释是可以的,但是现在是第一个,ServiceClass和@Service

代码语言:javascript
复制
@Autowired
private lateinit var serviceClass: ServiceClass

代码语言:javascript
复制
@Autowired constructor(
      private val serviceClass: ServiceClass
)

这两者都给出了错误的No beans of type found,我现在需要一个构造函数为我的服务在kotlin或什么?

我读过许多题为“理解科特林迟到”之类的文章,但我认为我仍然缺少一些核心思想,因为它们都没有任何意义.Kotlin文档是可以的,但只适用于您已经知道的概念。否则,它也是非常混乱的。

编辑似乎给ServiceClass构造函数也没有做任何事情

EN

回答 1

Stack Overflow用户

发布于 2019-04-30 09:35:24

在kotlin (在Java中,我认为)中,您可以在构造函数中注入依赖项,如下所示:

代码语言:javascript
复制
import org.springframework.stereotype.Repository
import org.springframework.stereotype.Service

@Service
class ServiceClass constructor(
    private val repository: AddressRepository
) {
    // Do stuff here
}

@Repository
class AddressRepository

这与以下情况相同:

代码语言:javascript
复制
@Service
class ServiceClass {
    @Autowired
    private lateinit var repository: AddressRepository

    // Do stuff here
}

@Repository
class AddressRepository

但是它允许您进行单元测试而不需要Spring上下文(@SpringBootTest)。

然后,您可以以另一种方式注入您的服务。

代码语言:javascript
复制
@Service
class OtherService constructor(
    private val service: ServiceClass
) {
    // Other stuff here
}

这段代码对我来说没有什么问题。(IntelliJ 2019.1.1)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55917700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档