인터셉터에서 데이터 받기 컨트롤러에서 Model에 담은 데이터를 HTML로 가기 전에 만나는 postHandle 인터셉터에서 받으려면 Map data = modelAndView.getModel(); 로 컨트롤러의 모델에 담긴 모든 데이터를 받아올 수 있습니다. Map의 Value타입을 Object로 주면 다양한 데이터타입을 받아올 수 있습니다. 인터셉터에서 데이터 전달 modelAndView.addObject("이름", data.get("모델명")) 로 HTML에 던져주면 됩니다. model에 담긴 데이터 뿐만 아니라 컨트롤러에서 커멘드객체로 전달된 데이터도 인터셉터에서 받을 수 있습니다!
interceptor 인터셉터 사용하는 법 특정 영역(컨트롤러의 메소드)에서 반복적으로 실행되는 내용을 정의 검문소 역할을 합니다! InterceptorConfig: 인터셉터가 언제 실행될지 설정하는 곳. 하나만 만들면 됨 Interceptor: 실행 기능을 만드는 곳. 기능마다 여러개 생성 Interceptor 클래스 만들기 HandlerInterceptor 인터페이스를 구현해줍니다. HandlerInterceptor에 정의된 메소드 구현 preHandle() : 컨트롤러의 메소드가 실행되기 전에 검문소 설치 postHandle() : 컨트롤러의 메소드가 실행되고 html이 실행되기 전에 검문소 설치 afterCompletion() : html이 실행된 후 검문소 설치 인터셉터를 Config에서 사용해..
여러 개의 테이블의 데이터를 조회하는 법 조회하고 싶은 컬럼이 여러개의 테이블에 있을 경우 조인을 사용해줍니다. 이때 각 테이블에서 공통된 컬럼을 조건으로 넣습니다. 구매 목록 화면을 만들기 위해 SHOP_BUY(구매 정보), SHOP_BUY_DETAIL(구매 상세정보), SHOP_ITEM(상품 정보), ITEM_IMG(상품 이미지) 총 4개의 테이블의 컬럼을 SELECT하는 쿼리문을 mapper에 만들었습니다. 여기서 SHOP_BUY 테이블과 BuyVO가 매핑된 resultMap이기 때문에 나머지 3개의 테이블의 컬럼은 조회할 수 없습니다. 그래서 나머지 테이블의 데이터도 VO와 resultMap으로 연결해주어야 합니다! BuyVO에 buyDetailList 필드를 추가해주고 List이기때문에 resu..
필드를 통한 의존성 주입 컨트롤러에서 서비스의 메소드를 사용하기 위해 서비스 클래스에는 @Service("서비스명")를 컨트롤러에는 @Resource(name="서비스명")으로 필드를 생성하여 의존성을 주입할 수 있습니다. 올드한 방식임!! 생성자를 통한 의존성 주입 스프링 부트에서 권장되는 방법으로 해당 클래스의 생성자를 통해 의존성을 주입할 수 있습니다. 생성자를 자동으로 만들어주는 어노테이션을 사용하여 코드를 간결하게 만들어줄 수 있습니다! @RequiredArgsConstructor 이 때, 필드는 final로 만들어주어야 합니다. (의존성 역전의 원칙을 지키기 위함임!)