[SPRING] 다른 환경을 처리하는 주석 기반 종속성 주입
SPRING다른 환경을 처리하는 주석 기반 종속성 주입
많은 전문가가 주석 중심 종속성 주입으로 전환하지 않는 주된 이유는 개발 / 테스트 / 프로덕션 환경 간의 전환을 지원하지 않는다는 것입니다. 대부분의 경우 개발 목적을 위해 다른 서비스 (및 연결)뿐만 아니라 모의하거나 더미 인스턴스를 만들어야하는 경우가 있습니다.
어제 스프링 어노테이션으로 한 가지 해결책을 찾아 냈습니다.
@Value("#{${env} == "production" ? realService : dummyService}")
private SomeService service;
... 어느 쪽이 좋을까. 좋지는 않아.
나는 당신의 해결책, 또는 주장에 대해 매우 흥미가있을 것입니다 : 왜 그것이 진짜 문제가 아닌가?;) Guice, Spring 또는 다른 사람들도 환영합니다.
원래 문제는이 스레드의 일부였습니다. Spring @Autowired 사용법이지만 새로운 스레드를 만들 가치가 있다고 생각했습니다.
해결법
-
==============================
1.불행히도 Guice에 대해서는 언급 할 수 없지만, 주석에서 언급했듯이 Spring 3.1 이상을 사용하고 있다면 실제로 Spring 프로파일을 사용할 수 있습니다.
불행히도 Guice에 대해서는 언급 할 수 없지만, 주석에서 언급했듯이 Spring 3.1 이상을 사용하고 있다면 실제로 Spring 프로파일을 사용할 수 있습니다.
프로파일을 사용하는 Java 기반 구성은 다음과 유사 할 수 있습니다.
@Configuration @Profile("production") public class ProductionConfig { @Bean public SomeService someService() { ... } } @Configuration @Profile("dev") public class DevelopmentConfig { @Bean public SomeService someService() { ... } }
그러면 소비하는 클래스가 다시 단순 해집니다.
... @Autowired private SomeService someService; ...
원하는 프로파일은 시스템 속성을 통해 활성화 될 수 있습니다.
-Dspring.profiles.active="production"
다른 환경에서 애플리케이션을 실행할 때 유용 할 수 있습니다.
개인적으로 저는 스프링 프로파일에 전혀 의존하지 않습니다. 대신 런타임에 응용 프로그램에 전달되는 외부 특성 파일의 환경 차이를 캡슐화합니다. 이 접근 방식은 지금까지 잘 작동했지만 ymmv.
-
==============================
2.@Value 주석은 사용자가 시도한 방식으로 작동하지 않습니다. String의 형태로 값을 줄 수 있습니다. 당신이 원하는 것을 얻기 위해 @ShyJ가 제안한대로 스프링 프로파일을 시도 할 수 있습니다.
@Value 주석은 사용자가 시도한 방식으로 작동하지 않습니다. String의 형태로 값을 줄 수 있습니다. 당신이 원하는 것을 얻기 위해 @ShyJ가 제안한대로 스프링 프로파일을 시도 할 수 있습니다.
희망이 당신을 도와줍니다. 건배.
from https://stackoverflow.com/questions/13490393/annotation-driven-dependency-injection-which-handles-different-environments by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 오류를 다시 서비스 계층의보기로 전달 (0) | 2019.03.12 |
---|---|
[SPRING] <form : select> 태그를지도와 함께 사용하십시오. (0) | 2019.03.12 |
[SPRING] Spring MVC에서 정확한 클라이언트 브라우저 이름과 버전을 얻는 방법은 무엇입니까? (0) | 2019.03.12 |
[SPRING] Spring bean 정의를 오버라이드하는 방법은 무엇입니까? (0) | 2019.03.12 |
[SPRING] XML 스프링 스케줄링 설정에서 주석 / 코드 설정으로 이동하는 방법? (0) | 2019.03.12 |