저는 봄에 웹 애플리케이션을 만들고 있습니다. 응용 프로그램은 특성 파일로 구성됩니다. 서로 다른 서버에 응용 프로그램의 인스턴스가 여러 개 있습니다. 각 인스턴스마다 다른 구성 파일이 있습니다. 각 인스턴스는 다른 고객에 맞게 사용자 지정됩니다. 컨트롤러와 서비스를 사용하고 있습니다. 다음과 같은 내용 :요청 객체에 따른 스프링 의존성 주입
public class Controller1 {
@Autowired
Service1 service1;
@RequestMapping(value = "/page.htm", method = { RequestMethod.GET, RequestMethod.POST })
public ModelAndView serve(HttpServletRequest request, HttpServletResponse response) {
service1.doSomething();
return new ModelAndView("/something");
}
}
@Service
public class Service1 {
@Autowired
Service2 service2;
public void doSomething() {
…
service2.doAnotherThing();
…
}
}
@Service
public class Service2 {
@Value("${propertyValue}")
private String propertyValue;
//doAnotherThing() will use propertyValue
public void doAnotherThing() {
…
//Do something with propertyValue
…
}
}
이제 새로운 요구 사항이 생겼습니다. 각 고객에 대해 여러 개의 인스턴스가 없지만 모든 고객에 대해 여러 개의 도메인이있는 인스턴스는 하나만 있습니다. 응용 프로그램은 컨트롤러의 요청 개체의 호스트 이름에 따라 구성을 결정해야합니다. 따라서 고객이 브라우저를 www.app1.com으로 지정하면 구성 파일 1을 사용해야하지만 고객이 www.app2.com을 사용하면 구성 2를 사용해야합니다.
구성 파일을 데이터베이스로 이동했지만 종속성 삽입 방법을 모르는 것을 깨달았습니다. 서비스는 연결되어 있으며 service1은 service2를 사용하고 service2는 구성에 따라 값을 사용해야합니다. 서비스 2는 요청 객체에 대한 지식이 없습니다.
해결 방법이 있습니까?
<bean id="customerAConfig"../>
<bean id="customerBConfig"../>
<bean id="customerCConfig"../>
그리고 세션이 configuartion이 활성화되는 포인터 역할을 ConfigurationService을 범위가 있습니다
덕분에,