google guice는 dependency inject 경량 프레임워크이다.


이를 scala(spark)에서 사용하려면 여러 방법이 있겠지만 내가 아는 방법은 2가지이다.



1. scala-guice를 사용한다.


https://github.com/codingwell/scala-guice


실제로 scala-guice를 사용해 구현해보니 경량스럽게 개발이 가능하다.



google guice와 scala-guice 개념을 이해하는데 도움되는 글


https://www.tutorialspoint.com/guice/guice_provides_annotation.htm


https://www.journaldev.com/2403/google-guice-dependency-injection-example-tutorial


https://medium.freecodecamp.org/a-hands-on-session-with-google-guice-5f25ce588774


AbstractModule을 상속하지 않아도 쉽게 구현 가능하다.

그리고 복잡한 형태의 Module을 사용할 수 있다.






2. finatra의 TwitterModule를 사용한다.


TwitterModule은 scala-guice/google-guice 기반이고 finatra 관련 프로젝트라서 엄청난 dependency를 갖고 있다. 


https://twitter.github.io/finatra/user-guide/getting-started/modules.html#module-configuration-in-servers



TwitterModule은 google-guice의 AbstraceModule을 구현한 것으로 무겁지만(너무 많은 dependency) 쉬운 개발이 가능하고 훨씬 기능이 많다.







Posted by '김용환'
,