웹 & 프레임워크 168

proxy joinPoint 확장

//이놈은 좀 확장된놈임, around에 알맞는놈. 따로따로 만들필요가읍어 //트랜젝션은 이런 형태가 될것임. public Object aroundLogging(ProceedingJoinPoint joinPoint) { Object obj = null; //proceed() 타켓을 호출하라! try { //before //여기서 리턴하면 그 이후가 안됨.타겟이 실행안됨.. //매개변수가 잘못됐으면 그냥 실행하지 않게 할수있다 obj = joinPoint.proceed(); //after-returning } catch (Throwable e) { //after-throwing e.printStackTrace(); } finally { //after } return obj; }//end aroundLogg..

공통로직 @Aspect위에 @Order를 넣어서 순서를 줘보자

@Order(1)@Aspect@Component 숫자가 클수록 핵심로직에 가깝게 돈다여러개의 공통로직이 들어가야할경우, 그 순서가 중요할때가있다퍼포먼스체크 로직일경우, 최대한 가깝게 돌아야 제대로 체크할수있기때문이다.이를 컨트롤 하기위해 Order를 크게주면 된다. .proceed()는 다음 모듈을 시작하라는뜻인데,이게 바로 타겟이 있으면 타겟으로 갈텐데, 다음에 공통로직이 있으면 글로 갈것이다.

@Aspect로 매개변수 체크를 해보자

@Aspect@Componentpublic class ParameterCheckAspect { @Before("execution(* com.gorakgarak.sample2.annotation.GreetingService.*(*))") public void checkNull(JoinPoint joinpoint) { if(joinpoint.getArgs()[0] == null){ throw new IllegalArgumentException("매개변수가 null입니다."); } } }//end public class //이건 아예 에러가 뜨게 만들어준다.//이 처리가 없다면 그냥 메인에서 null이 출력될것이다 걍 에러뜨기 싫다면 @Aspect@Componentpublic class ParameterChe..

직관적이고 간단한 Spring MVC구조

Spring MVC View-------------------------------(Boundary)동기 (html, JSP)비동기 (xml,JSON) Model---------------------------------------Service계층 - XXXServiceDAO계층 - XXXDAODomain(Value) - VO Controller--------------------------------------View와 Model(Service) 사이의 중계자 역할을 하는 놈!1. parameter를 조회하고2. Service호출3. 결과Data저장4. 페이지 이동(View) 바뀌지않는 요청처리절차는 Spring에서 DispatcherServlet이 해줌.