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..
1. Joinpoint: 조인포인트는 클라이언트가 호출하는 모든 비즈니스 메서드로서, 아래 설명할 개념인 포인트컷의 대상, 또는 후보가 되어 조인포인트 중 포인트 컷이 선택된다. 2. Pointcut: 클라이언트가 호출하는 모든 비즈니스 메서드가 조인포인트라면, 포인트컷은 필터링된 조인포인트를 의미한다. 바로 예제를 보면, 3. Advice: 어드바이스는 횡단 관심에 해당하는 공통 기능의 코드를 의미하며, 위 예제에서는 LogAdvice이다. 또한 aop:before 나 after를 통해 advice를 실행하는 시점을 지정할 수 있다. 4. Weaving: 위빙은 포인트컷으로 지정한 핵심 관심 메서드가 호출될 때, advice에 해당하는 횡단 관심 메서드가 삽입되는 과정을 의미한다. 이 위빙을 통해서 메..
이전 포스팅들에서 Spring 프레임워크가 지속적인 DI(의존성 주입)을 통해 객체간 결합도를 줄인다고 강조했었다. 이번에는 결합도가 아닌 모듈간 공통 코드를 활용하는 정도를 나타내는 "응집도"를 높이기 위한 Spring의 AOP에 대하여 다뤄보겠다. AOP(관점 지향 프로그래밍)을 간단하게 설명하면, 비즈니스 로직에서 사용되는 메서드들이 가지고 있는 공통의 코드를 따로 분리하여 사용하여 코드의 재사용성을 높이고자 하는 개념이다. AOP를 이해하는데 가장 핵심적인 개념이 "관심 분리"이다. AOP에서는 아래 그림과 같이 메서드마다 공통적으로 작성해줘야 하는 로깅이나 예외, 트렌젝션과 같은 처리 코드들을 횡단 관심이라고 한다. 이에 반해 사용자에 요청에 따라 실제로 수행되는 핵심 비즈니스 로직을 핵심 관심..
- javascript
- react-native
- AsyncStorage
- react
- 정보보안기사 #실기 #정리
- 인천 구월동 이탈리안 맛집
- Promise
- redux-thunk
- Async
- 맛집
- 파니노구스토
- await
- redux
- 인천 구월동 맛집
- 이탈리안 레스토랑
- Total
- Today
- Yesterday