[SPRING] 봄과 Guice 함께 또는 그냥 봄
SPRING봄과 Guice 함께 또는 그냥 봄
나는 처음부터 새로운 자바 웹 애플리케이션을 시작하고있다.
Spring Framework에 대한 많은 경험이 없지만 Transaccions Management와 같은 기능을 사용하고 싶습니다.
다른 한편으로는, 나는 의존성 주입을 위해 Guice를 정말로 좋아합니다.
Guice와 Spring이 함께 작업 할 수 있다는 것을 알고 있습니다. http://www.jroller.com/mindcrime/entry/an_example_of_integrating_guice
그러나 내 애플리케이션 설계를 시작하기 전에 누군가가 그러한 접근 방식을 통해 문제를 경험했는지 알고 싶었습니다.
또한 Guice가 정말 좋아하는 부분은 XML 구성 파일이 필요 없지만 더 짧고 읽기 쉬운 Java 모듈 만 필요하다는 것입니다. Guice와 비슷한 Spring의 XML 구성 파일에 대한 대안이 있습니까?
해결법
-
==============================
1.나는 스프링만으로도 엔터프라이즈 애플리케이션에 충분하다고 생각한다.
나는 스프링만으로도 엔터프라이즈 애플리케이션에 충분하다고 생각한다.
Spring은 XML을 필요로하지 않는다 !!! 최신 스프링 애플 리케이션은 Java Config와 최소한의 구성을 사용합니다. Spring Boot Guides를 살펴보십시오. Whole Spring 애플 리케이션은 XML을 전혀 사용할 수 없다.
Guice는 훌륭하지만 매우 제한적입니다. Spring을 사용하면 트랜잭션과 지속성을 가진 웹 애플리케이션 또는 REST 애플리케이션을 매우 쉽고 빠르게 작성할 수있다. Guice에게 이것은 더 복잡합니다.
-
==============================
2.방금 시작하면 https://github.com/spring-projects/spring-boot를 사용하여 권하고 싶습니다.
방금 시작하면 https://github.com/spring-projects/spring-boot를 사용하여 권하고 싶습니다.
그것은 훌륭한 자동 구성 기능을 가지고 있으며 상용구 코드를 저장하지 않아도됩니다. 임베디드 Tomcat으로 인해 응용 프로그램 서버를 사용하지 못하게 할 수도 있습니다. 예를 들어 REST 엔드 포인트로 사용할 수있는 간단한 MVC 컨트롤러 구현은 다음과 같습니다.
@Controller @EnableAutoConfiguration public class SampleController { @RequestMapping("/") @ResponseBody String home() { return "Hello World!"; } public static void main(String[] args) throws Exception { SpringApplication.run(SampleController.class, args); } }
이제 java -jar your_package.jar과 thats all을 실행할 수 있습니다. 또한 트랜잭션 관리, 데이터베이스 통합 등을 얻을 수 있습니다. 더 많은 예제가 언급 된 링크에서 찾을 수 있습니다. 특히 https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples 디렉토리
-
==============================
3.Spring은 두 개의 주요 릴리스에 대해 Java 기반 주석 설정을 사용했다. XML의 한 줄을 작성할 필요가 없습니다 (web.xml조차도 아닙니다!).
Spring은 두 개의 주요 릴리스에 대해 Java 기반 주석 설정을 사용했다. XML의 한 줄을 작성할 필요가 없습니다 (web.xml조차도 아닙니다!).
저는 Guice와 Spring에서 일했습니다. Guice는 DI가 필요한 소규모 프로젝트에는 충분하지만 MVC 또는 트랜잭션 지원을 위해 Spring을 사용하려는 경우 해당 DI도 사용할 수 있습니다. Guice는 또한 Spring이하는 것처럼 좋은 프로파일 지원을하지 못합니다. 로컬 개발, 테스트 환경 및 생산을 위해 별도의 bean을 원한다면 모듈을 직접 수동으로 전환해야합니다.
-
==============================
4.Google Guice는 거의 모든 Spring Dependency Injection 개념에 대해 1 : 1 매핑을 가지고 있지만 다음과 같은 몇 가지 멋진 기능이 있습니다.
Google Guice는 거의 모든 Spring Dependency Injection 개념에 대해 1 : 1 매핑을 가지고 있지만 다음과 같은 몇 가지 멋진 기능이 있습니다.
1. Java로 작성되었습니다. Google Guice에는 Java 코드의 모든 구성이 포함되어 있으므로 XML 구성 등을 다룰 필요가 없습니다.
2. 더 나은 오류 메시지. Guice는 더 나은 스택 추적을 정리하고 다시 시작하는 인터셉터를 가지고 있습니다. 봄은 모든 것을 내뱉습니다.
3. JIT (just-in-time) 바인딩 (또는 암시 적 바인딩). 즉, 인수가 0 인 생성자가 있으면 추가 바인딩이 필요없고 삽입 만하면됩니다! 제로 인수 생성자이거나 이미 주입 된 여러 인수를 가진 생성자를 삽입하려고하는 경우와 마찬가지로 추가 구성이 필요하지 않습니다. 또, 그냥 주사!
4. 열망 / 게으른 주입 Spring으로 주입 할 때, 아무것도 또는 모든 것을 주입하지 않을 것이라고 말합니다. Guice에는 lazily로 주입 할 수있는 옵션이 있는데, 이는 필요한 의존성 그래프의 하위 섹션 만 작성한다는 의미입니다. 이것은 몇 가지를 의미합니다. 이상한 특수 스프링 테스트 파일은 필요 없으며, Guice는 테스트를 빨리 시작하고 최소한의 설정만으로 Eclipse에서 통합 테스트를 실행할 수 있습니다!
5. 유형별로 바인딩. 이것은 이름으로 묶는 Spring과는 다르다. Spring에서 실수로 두 개의 인스턴스를 같은 이름으로 묶는다면, Spring은 자동적으로 실패 할 것이고, 마지막에 오는 바인딩을 취함으로써 당신을 혼란에 빠지게 할 것이다. Spring은 "bind by type"옵션을 제공하지만, 당신을 속일 수는 없다. 기본 구현은 여전히 String이다.
출처 : https://github.com/google/guice
-
==============================
5.또한 가벼운 J2SE DI 엔진을 위해 HK2를 살펴볼 것을 제안합니다. Guice 및 CDI와 유사하며 재미있는 많은 확장 기능을 제공합니다. 또한 Guice와 Spring에서 양방향 브릿지를 통해 작동합니다. HK2에 대한 정보는 http://hk2.java.net/에서 얻을 수 있습니다. Guice 브릿지에 대한 정보는 https://hk2.java.net/2.2.0-b27/guice-bridge.html에 있습니다. Spring 브릿지에 대한 정보는 https://hk2.java.net/2.2.0-b27/spring-bridge.html에 있습니다.
또한 가벼운 J2SE DI 엔진을 위해 HK2를 살펴볼 것을 제안합니다. Guice 및 CDI와 유사하며 재미있는 많은 확장 기능을 제공합니다. 또한 Guice와 Spring에서 양방향 브릿지를 통해 작동합니다. HK2에 대한 정보는 http://hk2.java.net/에서 얻을 수 있습니다. Guice 브릿지에 대한 정보는 https://hk2.java.net/2.2.0-b27/guice-bridge.html에 있습니다. Spring 브릿지에 대한 정보는 https://hk2.java.net/2.2.0-b27/spring-bridge.html에 있습니다.
어떤 DI 공급자를 사용할 지 결정하는 것은 응용 프로그램에 필요한 특수 기능을 기반으로합니다.
from https://stackoverflow.com/questions/21056063/spring-and-guice-together-or-just-spring by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 사용자 정의 스프링 범위? (0) | 2019.04.06 |
---|---|
[SPRING] @Transactional (noRollbackFor = RuntimeException.class)은 RuntimeException에서 롤백을 방지하지 않습니다. (0) | 2019.04.06 |
[SPRING] SPRING MVC에서의 URL 패턴 제한 (0) | 2019.04.06 |
[SPRING] Spring Security와의 CSRF 통합시 Session timeout으로 인해 Spring MVC에서 Access Denied가 발생합니다. (0) | 2019.04.06 |
[SPRING] Spring MVC가 ArrayList를 컨트롤러로 전달 (0) | 2019.04.06 |