🌱 SPRING
스프링에서의 요청 처리 순서
스프링에서의 요청 처리 순서 ① 요청(Request)이 브라우저에서 떠나면서 사용자가 요구하는 내용을 전달한다.하나의 프런트 컨트롤러 서블릿에서 요청을 처리하는데, 단일 프런트 컨트롤(DispatcherServlet)라는 단일 서블릿이 실제 처리를 수행하기 위해 다른 컴포넌트에 대한 요청 책임을 위임하는 웹 애플리케이션의 일반적인 패턴을 제공한다.② DispatcherServlet은 요청을 전달할 컴포넌트를 선택하기 위해 핸들러 매핑(Handler Mapping)에 도움을 요청한다.③ 적절한 컨트롤러가 선택이 되면 해당 컨트롤러로 요청을 보낸다.컨트롤러에서 적당한 로직을 타고 로직의 결과물이 사용자의 브라우저에 표시되기 위한 형태의 정보로 변환된다. → 모델④ 모델과 뷰를 포함하여 DispatcherSe..
어드바이스에서 파라메터 처리
어드바이스에서 파라메터 처리메서드를 어드바이스하는 애스펙트가 파라메터를 가질 때 어떻게 처리할 수 있을까? 1234567891011121314151617181920@Aspectpublic class TrackCounter{ private Map trackCounts = new HashMap(); @Pointcut("execution(* soundsystem.CompactDisc.playTrack(int)) && args(trackNumber)") public void trackPlayed (int trackNumber) {} @Before("trackPlayed(trackNumber)") public void countTrack (int trackNumber) { int currentCount = get..
@Around
@Around@Around는 단일 어드바이스 메서드로 @Before와 @After를 동시에 컨트롤 할 수 있다. 12345678910111213141516171819202122232425@Aspectpublic class Audience{ @Pointcut("execution(** concert.Performance.perform(..))") public void performance() {} @Around("performance()") public void watchPerformance (ProceedingJoinPoint joinPoint) { try { System.out.println("휴대폰을 매너 모드로 변경한다."); System.out.println("자리에 앉는다."); joinPoint..
애스펙트 정의하기
애스펙트 정의하기123456789101112131415161718192021222324252627@Aspectpublic class Audience{ @Before("execution(** concert.Performance.perform(..))") public void silenceCellPhones () { System.out.println("휴대폰을 매너 모드로 변경한다."); } @Before("execution(** concert.Performance.perform(..))") public void takeSeats () { System.out.println("자리에 앉는다."); } @AfterReturning("execution(** concert.Performance.perforn(..)..
포인트 커트를 이용한 조인 포인트 선택
포인트 커트를 이용한 조인 포인트 선택스프링은 AspectJ에서 사용할 수 있는 포인트 커트 지정자에 속하는 것만 지원한다. AspectJ 지정자 설명 args() 인자가 주어진 타입의 인스턴스인 조인 포인트 매칭을 정의한다. @args() 전달된 인자의 런타임 타입이 주어진 타입의 어노테이션을 갖는 조인 포인트 매칭을 정의한다. execution() 메서드 실행 조인 포인트와 일치시키는 데 사용된다. this() AOP 프록시의 빈 레퍼런스가 주어진 타입의 인스턴스를 갖는 조인 포인트를 정의한다. target() 대상 객체가 주어진 타입을 갖는 조인 포인트를 정의한다. @target() 수행 중인 객체의 클래스가 주어진 타입의 어노테이션을 갖는 조인 포인트를 정의한다. within() 특정 타입에 속하..
AOP란?
AOP를 이해하기 위해서는 횡단 관심사에 대해서 우선 알아야 한다. 횡단 관심사(cross-cutting concerns) 한 애플리케이션의 여러 부분에 영향을 주는 기능공통 기능을 재사용하기 위해 일반적으로 상속이나 위임을 사용하나, 상속은 객체의 정적 구조에 의존하므로 복잡하고 깨지기 쉬운 구조가 되기 쉽고, 위임은 대상 객체에 대한 복잡한 호출로 인해 번거로움 AOP란?AOP는 횡단 관심사를 애스팩트(aspect)라는 특별한 클래스로 모듈화한다.아래 내용을 보다보면 이해가 될 것이다. AOP가 다른 기법과 차별화되는 장점1. 전체 코드 기반에 흩어져 있는 관심 사항이 하나의 장소로 응집된다2. 여타 서비스 모듈이 자신의 주요 관심 사항에 대한 코드만 포함하고 그 외 관심 사항은 모두 애스팩트로 옮겨..