전체 글 (214) 썸네일형 리스트형 5.5. 커스텀 Scopes 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-scopes-custom bean의 scoping 메커니즘은 확장가능성이 있다. 나만의 scope를 만들수도 있으며 이미 존재하는 scope를 재정의할 수도 있다. 하지만 재정의는 그리 좋지 않으며, built-in된 싱글턴과 프로토타입 scope는 오버라이드 할 수 없다. 5.4.6. 생성을 위한 프록시 종류 고르기 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-scopes-other-injection-proxies 요소로 bean을 위한 프록시를 만들 때, 스프링 컨테이너는 기본적으로 CGLIB 기반 클래스의 프록시를 만든다. ※ CGLIB 프록시는 오직 public 메소드 호출만을 가로챈다! 이 프록시에 public하지 않은 메소드는 호출하지 말자. 그런 메소드들은 실제 대상 객체로부터 위임받은 적이 없기 때문이다. 대안으로, 요소의 'proxy-target-class' 속성을 false로 설정함으로써, 표준 JDK 인터페이스 기반의 프록시를 스프링 컨테이너가 만들도록.. 5.4.5. 의존성으로서의 Scoped Beans 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-scopes-other-injection 스프링 IoC 컨테이너는 객체의 인스턴스화 뿐만 아니라 협력자들을 엮어주는 일도 한다. 예를 들어, 만약 HTTP 요청 scope의 bean을 더 긴 scope를 가진 다른 bean에 주입하는 경우라면, scoped bean에(HTTP 요청 scope) AOP 프록시를 주입해야할 지 모른다. 즉, scoped 객체(HTTP 요청 scope)와 똑같은 public 인터페이스를 표현하는 프록시 객체를 주입해야한다는 것이다. 하지만 이는 실제 대상 객체를 관련 scope(HTTP.. 5.4.4. 애플리케이션 Scope 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-scopes-application 다음 bean 정의에 대한 XML 설정을 보자. 스프링 컨테이너는 전체 웹 애플리케이션을 위해 한번만 AppPreferences bean의 새로운 인스턴스를 만들어낸다. 즉, appPreferences bean은 ServletContext 레벨의 scope이며, 일반적인 ServletContext의 속성으로서 저장된 것이다. 이는 스프링의 싱글턴 bean과 어느정도 비슷하다. 하지만 중요한 두 가지가 다르다. 하나는 스프링 'ApplicationContext'(여러 웹 애플리케이션.. 5.4.3. 세션 Scope 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-scopes-session 다음 bean 정의에 대한 XML 설정을 보자. 스프링 컨테이너는 단일한 HTTP 세션의 라이프타임을 위한 새로운 UserPreferences bean 인스턴스를 만들어낸다. 즉, userPreferences bean은 HTTP 세션 레벨에 효과적이다. 요청 bean처럼, 생성된 bean의 내부 상태에 대해서는 바꾸고 싶은 만큼 바꿀 수 있다. 왜냐하면 같은 userPreferences bean의 정의를 이용해 생성된 다른 인스턴스들은 자신의 상태에서는 이 변화를 알아채지 못하기 때문이다.. 5.4.2. 요청 scope 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-scopes-request bean 정의에 대한 다음 XML 설정을 보자. 스프링 컨테이너는 각각의 HTTP 요청에 대해 LoginAction bean의 새로운 인스턴스를 만들어낸다. 즉, loginAction bean은 HTTP 요청 레벨로 scope가 설정된 것이다. 생성된 bean의 내부 상태에 대해서는 바꾸고 싶은 만큼 바꿀 수 있다. 왜냐하면 같은 loginAction bean의 정의를 이용해 생성된 다른 인스턴스들은 자신의 상태에서는 이 변화를 알아채지 못하기 때문이다. 그들은 개별 요청에 따라 구분된다.. 5.4.1. 웹 초기 설정 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-scopes-other-web-configuration 요청, 세션, 애플리케이션, 웹소켓 레벨의 scope를 제공하고 싶다면, bean을 정의하기 전에 약간의 minor한 초기 설정들이 필요하다(이러한 초기 설정은 싱글턴이나 프로토타입 scope에서는 필요없다). 이 초기 설정을 어떻게 하느냐는 어떤 서블릿 환경이냐에 따라 다르다. 스프링 웹 MVC의 DispatcherServlet을 통해 처리되는 요청에서는, 위 scope를 가진 bean들에 접근할 때 사실상 특별한 설정이 필요없다. DispatcherServ.. 5.4. 요청, 세션, 애플리케이션 그리고 웹소켓 Scopes 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-scopes-other 요청, 세션, 애플리케이션 그리고 웹소켓 scope들은 웹 환경의 스프링 ApplicationContext 구현체를 사용할 때만 사용할 수 있다. 만약 ClassPathXmlApplicationContext와 같은 일반적인 스프링 IoC 컨테이너에서 이 scope들을 쓴다면, bean scope를 모른다는 내용의 IllegalStateException이 발생한다. 이전 1 ··· 18 19 20 21 22 23 24 ··· 27 다음