我正在使用Spring的Web應用程序。應用程序使用屬性文件進行配置。 在不同的服務器中有多個應用程序實例,每個實例都有不同的配置文件(每個實例都爲不同的客戶定製)我使用的是控制器和服務。像這樣:取決於請求對象的彈簧依賴注入
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不知道請求對象。
有沒有一個乾淨的方法來解決這個問題?
感謝,