스프링 지식이 부족하기 때문에 범위 bean 의존성에 대해 심각한 의문점이 있습니다.스프링 MVC 범위가 지정된 Bean 의존성 및 경쟁 조건
3.5.4.5 Scoped beans를 의존성으로 읽었으며 관련 예제를 성공적으로 구현했습니다.
그러나 더 많은 것을하기 전에, 나는 나의 관심사를 공유하고 싶었다.
것은 내 사용 사례 및 작은 구현 세부 사항 I 사용자 당에 대한 도시를 만들려는 각 사용자 요청에 대한
을 공유합시다. 나는 싱글로이 도시를 주입 할 각 요청에 대해
@Configuration
public class CityFactory{
@Bean(name = {"currentCity" , "loggedInCity"})
@Scope(value = WebApplicationContext.SCOPE_REQUEST,proxyMode = ScopedProxyMode.TARGET_CLASS)
@Autowired
public CityBean getCityBean(HttpServletRequest request) {
return CityUtil.findCityWithHostName(request.getServerName());
}
는 컨트롤러에 대한 기본 범위입니다 컨트롤러 범위.
@RequestMapping("/demo")
@Controller
public class DemoController {
@Autowired
CityBean city;
@RequestMapping(value = "/hello/{name}", method = RequestMethod.GET)
public ModelAndView helloWorld(@PathVariable("name") String name, Model model) {
Map<String, Object> myModel = new HashMap<String, Object>();
model.addAttribute("hello", name);
model.addAttribute("test", "test in " + city.getDomainName() + " !!! ");
return new ModelAndView("v3/test", "m", model);
}
}
내 질문 :
1) 어떤 경쟁 조건이 있습니까? 다중 요청 환경에서 내 응용 프로그램을 파괴 할 수있는 컨텍스트 전환이 걱정됩니다.
2) 요청 당 컨트롤러를 만드는 또 다른 솔루션을 알고 있지만 현재 솔루션보다 오류가 발생하기 쉽습니다. 다른 개발자가 범위를 지정하는 컨트롤러를 잊어서 요청할 수 있기 때문입니다.
어떻게 컨트롤러가 전체 범위를 요청하도록 할 수 있습니까? 그냥 조금 호기심이 있기 때문에.
감사합니다 ...
CityBean 클래스는 다른 기존 라이브러리에서오고있다. 너무 귀하의 제안 주셔서 대단히 감사합니다. – Ozgur