Как работает внедрение зависимостей с аннотацией @Inject в микронавтике Kotlin? - PullRequest
0 голосов
/ 18 июня 2019

как внедрить зависимости в классе с помощью аннотации @Inject для платформы micronaut

@Controller("/")
class HelloController(val greetService:GreetService){

 @Get("/hello")
 fun getMessage(){
    greetService.greet 
  }

}

class GreetService(val userRepo:UserRepo){

  fun doSomething(val data:String){
      userRepo.saveData(data)
  } 
}
class UserRepo(val db:DbHandler){
     fun saveData(val data){
       db.save(data)
     }
}

как использовать @Inject

Ответы [ 2 ]

0 голосов
/ 25 июня 2019
 @Singleton
 class GreetService(val userRepo:UserRepo){

 fun doSomething(val data:String){
  userRepo.saveData(data)
     } 
   }

bean-компонент, который вы хотите внедрить, должен быть объявлен как bean-компонент согласно Micronaut с использованием предоставленных аннотаций, таких как @Singleton, @Context, @ ThreadLocal и т. Д.

0 голосов
/ 18 июня 2019

Это не отличается, вы можете написать что-то вроде этого:

@Inject
var greetingService:GreetingService;

Или вы можете сделать это на конструкторе

class HelloController(@Inject val greetService:GreetService)

Я предпочитаю второй вариант, потому что он использует val вместо var.

...