이전 포스팅에서 Command 객체의 이름을 임의로 변경하기 위해서 @ModelAttribute 어노테이션을 한번 사용했었다. 그러나 이외에도 View 단에서 사용할 데이터를 미리 설정해놓는 용도로도 @ModelAttribute 어노테이션을 사용할 수 있다. 바로 확인해보자. 우선, BoardController 클래스의 다른 컨트롤러 매서드 상단에 다음과 같이 Map을 반환하는 매서드를 선언하여 상단에 @ModelAttribute 어노테이션으로 값을 등록한다. @ModelAttribute("conditionMap") public Map searchConditionMap() { Map conditionMap = new HashMap(); conditionMap.put("제목", "TITLE"); condi..
직전 포스팅에서 다뤘던 내용으로 충분히 어떤 웹 프로젝트를 구성하는데 아무런 문제가 없지만, 만약에 VO 객체 내에 없는 값을 jsp에서 요청하여 전달하려고 하면, VO 객체에 해당 값을 추가하는 불편함이 있다. 이 경우, @RequestParam을 사용하여 VO 객체를 수정하지 않고도 요청 값을 자동으로 전달받을 수 있다. 예를 들어, jsp 페이지 내에서 다음과 같이 VO 객체에 선언되어 있지 않는 값을 사용했을 경우, 제목 내용 ◎BoardController.java package com.freeflux.view.board; import java.util.List; import org.springframework.stereotype.Controller; import org.springframewor..
Spring은 어노테이션 기반 설정을 제공함으로써 과도한 XML 설정으로 인한 문제를 해결할 수 있도록 한다. 마찬가지로, 이전에 bean 객체로 등록한 모든 클래스들을 어노테이션 설정으로 선언하여 사용할 수 있다는 것이다. 바로 들어가보자. 우선, action-servlet.xml 파일에서 이전에 등록한 모든 HandlerMapping, viewResolver, Controller 를 지운 뒤, 어노테이션을 사용할 수 있도록 context:component-scan 을 걸어준다. ◎action-servlet.xml 각 컨트롤러 선언부 위에 @Controller 어노테이션을 작성하여 컨테이너가 컨트롤러 객체를 자동 생성하게 할 수 있다. @Controller 어노테이션을 작성했기 때문에, 더 이상 Con..
직전 포스팅에서 Spring MVC 구조를 이해하기 위해 Model2 구조를 직접 구현했었다. 이번에는 직전 포스팅을 설명하기 위해 구현해놓은 구조를 하나씩 변경해가면서 Spring MVC 모델의 구조를 다시 한번 이해해보는 것이 목적이며, 비슷한 내용을 이전에 한번 포스팅한 적이 있으니 참고하면 이해가 더욱 쉬워질 것이다. - spring.xml 문서 작성: https://til-choonham.tistory.com/168 [Spring] spring.xml 문서 작성 요청 사항에 대한 Controller를 반환하기 위한 HandlerMapping을 수행하기 위해서는 해당 역할을 수행하는 xml문서를 따로 작성해야 한다. 그 방법은 다음과 같다. 우선 간단한 게시판 예제를 따라 진행 til-choonh..
스프링 프레임워크를 실습하기 이전에 MVC Model2 구조를 한번 다룬 적이 있다. 그 때는 web.xml 문서를 이용하여 HandlerMapping과 viewResolver, DispatcherServlet을 등록해서 사용했지만, Spring 프레임워크는 이 구조를 모두 자동으로 구현해준다. 이는 아주 편리한 feature이긴 하지만, 데이터의 흐름을 눈으로 따라가기가 쉽지 않아서 전체적인 이해나 디버깅이 쉽지 않았다. 그래서 이번에는 HandlerMapping과 viewResolver, DispatcherServlet 클래스들을 직접 구현하면서 각각의 모듈들이 어떤 기능을 하고 어떻게 사용되는 지 한번 확인해보려고 한다. 바로 들어가보자. 우선, model2의 대략적인 처리 순서는 다음과 같다. 1..
트랜젝션은 비즈니스 로직을 수행하는 경우, 일정 부분까지 수행한 후 오류가 발생할 시 현재까지의 모든 수행 내용을 처음으로 되돌릴 수 있도록 구현하는 것이다. 오라큰의 RollBack/Commit 과 비슷한 개념이라고 보면 된다. Spring에서 트랜젝션을 사용하려면 마찬가지로 네임스페이스를 설정해야한다. 다음으로 commit과 rollback 메서드가 정의되어 있는 트랜젝션 매니져 인터페이스를 bean 태그로 등록하고, property로 dataSource를 받아야 한다. ◎applicationContext.xml 이제, 태그를 사용해서 트랜잭션 관리 어드바이스를 설정한다. 지금까지는 AOP 관련 설정에서 사용한 모든 어드바이스 클래스를 직접 구현했지만, 트랜잭션 관리 기능의 어드바이스는 직접 구현하지..
앞서 AOP를 Spring 에서는 두 가지 방법으로 구현할 수 있다고 언급했다. 첫번째는 직전 포스팅까지 실습한 xml 설정 파일을 사용하는 방법이고, 두번째는 어노테이션을 이용하여 구현하는 것이다. 이번 포스팅은 두번째 방법인 어노테이션을 이용하여 AOP를 구현하는 예제를 알아보려고 한다. 우선 비즈니스 로직(핵심 관심)과 횡단 관심은 이전 포스팅과 동일한 예제로 진행하기 때문에 자세한 설명은 생략한다. 1. 어노테이션 사용을 위한 스프링 설정 우선 constructor-scan 방식과 유사하게 AOP를 사용하기 위해 xml 설정 파일 내부에 엘리먼트를 선언해야한다. 2. 어드바이스 클래스(횡단 관심)에 어노테이션 선언 횡단 관심으로 사용할 클래스 위에 @Service 어노테이션을 사용하여 컴포넌트가 ..
횡단 관심에 해당하는 어드바이스 메서드를 의미 있게 구현하려면 클라이언트가 호출한 비즈니스 메서드의 정보가 필요하다. 이런 비즈니스 메서드의 정보를 알 수 있게 해주는 joinPoint클래스의 메서드들을 확인해보자. JoinPoint 객체가 제공: 메서드 설명 Signature getSignature( ) 클라이언트가 호출한 메서드의 시그니처(리턴, 이름, 매개변수) 정보가 저장된 siginture 리턴 Object getTarger( ) 클라이언트가 호출한 비즈니스 메서드를 포함하는 비즈니스 객체를 리턴 Object[] getArgs( ) 클라이언트가 메서드를 호출할 때 넘겨준 인자 목록을 Object 배열로 리턴 Signiture 객체가 제공 메서드 설명 String getName( ) 클라이언트가 ..
어드바이스는 각 조인포인트에 삽입되어 동작할 횡단 관심에 해당하는 공통 기능이며, 동작 시점은 설정 파일에서 설정이 가능하다. 스프링 프레임워크에서는 총 다섯가지의 동작 시점을 제공한다. 동작 시점 설명 Before 비즈니스 메서드 실행 전 동작 After - After Returning: 비즈니스 메서드가 성공적으로 리턴되면 동작 (try) - After Throwing: 비즈니스 메서드가 실행 중 예외가 발생하면 동작 (catch) - After: 비즈니스 메서드가 실행된 후, 무조건 실행 (finally) Around 메서드 호출 자체를 가로채 비즈니스 메서드 실행 전, 후에 처리할 로직을 삽입할 수 있음 간단하게 예제들을 한번 확인해보자. 횡단 관심을 제외한 공통 예제 코드는 다음과 같다. ◎Us..
- Promise
- react
- 파니노구스토
- AsyncStorage
- await
- redux
- redux-thunk
- javascript
- 인천 구월동 이탈리안 맛집
- 맛집
- 정보보안기사 #실기 #정리
- 이탈리안 레스토랑
- Async
- 인천 구월동 맛집
- react-native
- Total
- Today
- Yesterday