在Micronaut Kotlin中,带有@Inject批注的依赖项注入如何工作?

时间:2019-06-18 12:09:52

标签: kotlin jvm micronaut

如何使用@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 :(得分:0)

您可以这样写:

@Inject
var greetingService:GreetingService;

或者您可以在构造函数上完成

class HelloController(@Inject val greetService:GreetService)

我喜欢第二个选项,因为它使用val而不是var。

答案 1 :(得分:0)

 @Singleton
 class GreetService(val userRepo:UserRepo){

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

要使用Micronaut,必须使用提供的注释(例如@Singleton,@Context,@ ThreadLocal等)将要注入的bean声明为bean。