원문은 Guice vs. Spring JavaConfig: A comparison of DI styles 이런 제목으로 올라왔습니다. 다소 기다란 글로 다 읽진 못했습니다. 대강 훝기만 했죠.

Spring In Action 책 초반에 나오는 Knight 예제를 구글 Guice와 Spring의 Configurationd을 XML이 아닌 Java로 어노테이션을 사용하여 할 수 있도록 하는 JavaConfig를 사용하여 비교한 글입니다.

비교된 항목은

1. String Identifier : both Guice and Spring JavaConfig register a win in this category, as neither relies on String identifiers in their configuration and both are easily refactorable through modern IDEs. 둘 다 비슷!

2. Speed/Performance : bean 생성할 때 여러 life cycle을 제공하는 spring이 당연히 단순하게 묶기만 하는 guice보다 느릴 수 밖에... Guice 승!

3. JAR file footprint : 예제(aop와 di사용한 예제)를 돌릴 때 필요한 jar 파일 갯수로..Guice는 딱 두 개 필요하고 spring은 spring-javaconfig.jar, spring-beans.jar, spring-aop.jar, spring-core.jar, spring-context.jar, commons-logging.jar, aopalliance.jar, asm-2.2.2jar, cglib-nodep-2.1_3.jar, and aspectjweaver.jar 좀.. 많이 필요하군요. Guice가 Spring보다 훨씬 가볍다고 할 수 있겠네요. Guice 승!

4. Non-intrusive : AOP에서 injection 되는 클래스가 Guice에 종속된다는 군요. 따라서 재사용 할 수도 없고 Guice.jar파일 없으면 컴파일도 안된다는군요. Spring 승!

5. Third-party beans : Third-party 빈에 속성을 DI 할 때 SpringConfig는 전혀 불편함을 못느꼈으나.. Guice로는 어려웠다. Spring 승!

6. Constant/literal injection : Injection할 때 Guice의 어노테이션 사용이 다소 불편한 것이 있다봅니다. Spring 승!

7. AOP : Spring이나 Guice나 둘 다 AspectJ에는 비교할 수 없지만 Guice는 공식 문서에서도 AOP가 Spring에 비해 좀 딸린다고 알렸고 그게 오히려 단순함을 추구하는 추세라고 했지만...어노테이션 붙이는게 복잡한다 봅니다. Spring 승!

결국 Spring이 DI와 AOP 기능만 Guice와 비교 해봤을 때 4승 1무 2패로 이겼네요.

이글의 밑에는 미친밥이 직접와서 리플도 달아놨군요. 흠.. 거기까지 읽기가 귀찮네요.