Programing

Kotlin에서 @Autowired와 같은 스프링 주석을 사용하는 방법은 무엇입니까?

lottogame 2020. 12. 29. 06:40
반응형

Kotlin에서 @Autowired와 같은 스프링 주석을 사용하는 방법은 무엇입니까?


Kotlin에서 다음과 같은 작업을 수행 할 수 있습니까?

@Autowired
internal var mongoTemplate: MongoTemplate

@Autowired
internal var solrClient: SolrClient

이것이 가능하다는 것을 확신하기 위해 몇 가지 옵션이 있으며 주석이 달린 생성자를 제안하지만 lateinit도 작동하며 경우에 따라 유용 할 수 있습니다.

Lateinit :

@Component
class YourBean {

    @Autowired
    lateinit var mongoTemplate: MongoTemplate

    @Autowired
    lateinit var solrClient: SolrClient
}

건설자:

@Component
class YourBean @Autowired constructor(
    private val mongoTemplate: MongoTemplate, 
    private val solrClient: SolrClient
) {
  // code
}

Spring 4.3을 사용하는 생성자 :

@Component
class YourBean(
    private val mongoTemplate: MongoTemplate, 
    private val solrClient: SolrClient
) {
  // code
}

생성자 버전은 빈 생성 시간과 삽입 된 모든 필드에서 모든 종속성을 확인합니다. 반면에 lateinit 삽입 된 필드는 var 일 수 있으며 런타임 공간이 거의 없습니다. 그리고 contructor로 클래스를 테스트하기 위해 리플렉션이 필요하지 않습니다.

연결:

  1. lateinit에 대한 문서
  2. 생성자에 대한 문서
  3. Kotlin으로 Spring Boot 애플리케이션 개발

예, 자바 주석은 대부분 자바 에서처럼 Kotlin에서 지원됩니다. 한 가지 문제는 기본 생성자에 대한 주석에 명시적인 'constructor'키워드가 필요하다는 것입니다.

에서 https://kotlinlang.org/docs/reference/annotations.html

클래스의 기본 생성자에 주석을 추가해야하는 경우 생성자 선언에 생성자 키워드를 추가하고 그 앞에 주석을 추가해야합니다.

class Foo @Inject constructor(dependency: MyDependency) {
  // ...
}

생성자를 통해 종속성을 자동으로 연결할 수도 있습니다. @Configuration, @Component, @Serviceetc로 종속성에 주석을다는 것을 잊지 마십시오.

import org.springframework.stereotype.Component

@Component
class Foo (private val dependency: MyDependency) {
    //...
}

참조 URL : https://stackoverflow.com/questions/35479631/how-to-use-spring-annotations-like-autowired-in-kotlin

반응형