복붙노트

[SPRING] 세션에서 Spring 저장 객체

SPRING

세션에서 Spring 저장 객체

Spring에서 장바구니를 구현하고 싶습니다. 따라서 Cart (제품, paymentType 및 deliveryType과 같은 속성을 가짐)를 세션에 저장해야합니다. bean으로 만들고 "scope"속성을 "session"으로 설정하려고 시도했지만 작동하지 않습니다. 컨트롤러 또는 Cart 클래스에서 몇 가지 추가 주석을 사용해야합니까? 모든 예제 사용은 정말 도움이 될 것입니다 :-) 미리 감사드립니다.

해결법

  1. ==============================

    1.

    @Component
    @Scope("session")
    public class Cart { .. }
    

    그리고

    @Inject
    private Cart cart;
    

    웹 컨텍스트 (dispatcher-servlet.xml)에서 선언 된 경우 작동해야합니다. 또 다른 옵션은 원시 세션을 사용하여 장바구니 객체를 그곳에 배치하는 것입니다.

    @RequestMapping(..)
    public String someControllerMethod(HttpSession session) {
        session.setAttribute(Constants.CART, new Cart());
        ...
        Cart cart = (Cart) session.getAttribute(Constants.CART);
    }
    
  2. ==============================

    2.장바구니를 컨트롤러에 직접 삽입하는 경우, 컨트롤러가 단독으로 범위가 지정되어 (기본적으로) 주입하려는 bean보다 넓은 범위에 있기 때문에 문제가 발생할 가능성이 높습니다. 이 우수 기사에서는 수행하려는 작업에 대한 네 가지 접근 방식에 대한 개요를 제공합니다. http://richardchesterwood.blogspot.co.uk/2011/03/using-sessions-in-spring-mvc-including.html.

    장바구니를 컨트롤러에 직접 삽입하는 경우, 컨트롤러가 단독으로 범위가 지정되어 (기본적으로) 주입하려는 bean보다 넓은 범위에 있기 때문에 문제가 발생할 가능성이 높습니다. 이 우수 기사에서는 수행하려는 작업에 대한 네 가지 접근 방식에 대한 개요를 제공합니다. http://richardchesterwood.blogspot.co.uk/2011/03/using-sessions-in-spring-mvc-including.html.

    다음은 솔루션 요약입니다.

    모든 방법에는 장단점이 있습니다. 나는 보통 옵션 2 또는 4와 함께 간다. 옵션 4는 실제로 매우 간단하며 스프링에 의해 문서화 된 유일한 접근법이다.

  3. ==============================

    3.다음과 같이 세션 및 프록시 모드로 범위 주석을 추가하면됩니다.

    다음과 같이 세션 및 프록시 모드로 범위 주석을 추가하면됩니다.

    @Component
    @Scope(value="session", proxyMode=ScopedProxyMode.TARGET_CLASS)
    public class ShoppingCart implements Serializable{
    }
    

    쇼핑 카트 객체를 사용할 필요가있는 곳이면 어디에서나 자동으로 쇼핑 할 수 있습니다.

    @Service
    public class ShoppingCartServiceImpl implements ShoppingCartService {
        Logger logger = LoggerFactory.getLogger(ShoppingCartServiceImpl.class);
    
    
        @Autowired
        ShoppingCart shoppingCart;
    }
    

    Disclosure : 봄 세션 범위를 보여주는 스프링 MVC, angularJS 및 부트 스트랩을 사용하는 샘플 프로젝트를 개발했습니다. https://github.com/dpaani/springmvc-shoppingcart-sample

  4. from https://stackoverflow.com/questions/10034993/spring-store-object-in-session by cc-by-sa and MIT license