Whiteship's Note


[스프링 3.0] 소녀시대와 함께하는 스프링 @MVC

Spring/3.0 : 2010.04.13 23:49


아우 귀찮아 ㅠ.ㅠ 아우 귀찮아... ㅠ_ㅠ 
괜히 만들었어~~ 괜히 소녀시대로 장난쳤어~~

퀴즈1) 태연은 뭐다??
퀴즈2) HandleAdapter는 뉴~규?

정답은 이번주 토요일 KSUG 세미나에서...
top

  1. Favicon of http://blog.lckymn.com BlogIcon Kevin 2010.04.14 05:57 PERM. MOD/DEL REPLY

    제 댓글은 계속 짬 당하는듯...ㅠ_ㅠ

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2010.04.14 11:51 신고 PERM MOD/DEL

    혹시 몰라서 찾아봤는데 역시;; 찾아서 꺼냈습니다.ㅋ
    일단 티스토리 영어환자 플러긴을 꺼뒀습니다. 내용을 보니까 Ascii로만 작성된 댓글을 차단한다는 내용밖에 없네요.

  2. Favicon of http://blog.lckymn.com BlogIcon Kevin 2010.04.14 14:44 PERM. MOD/DEL REPLY

    아 아... 테스팅 테스팅 테스팅 잘 보이나요? :)

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2010.04.20 14:39 신고 PERM MOD/DEL

    난감하네요... 헐.. 대체 왜이럴까요.
    플러그인이 아니면 필터 설정에 걸리는 것 밖에 없을텐데 말이죠. @_@.

  3. Favicon of http://helols.pe.kr BlogIcon is윤군 2010.04.16 15:37 PERM. MOD/DEL REPLY

    사실.... 개인적으로.. 발표 부분중에서 제일 맘에 드는 부분임..ㅋ

    Favicon of http://whiteship.me BlogIcon 기선 2010.04.16 15:42 PERM MOD/DEL

    응 내일 봅세~

  4. Favicon of http://blog.lckymn.com BlogIcon Kevin 2010.04.20 19:50 PERM. MOD/DEL REPLY

    헉! 이제 잘 써지나요?ㅡ_ㅡ?

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2010.04.28 14:15 신고 PERM MOD/DEL

    이때까진 안된듯..

    Favicon of http://lckymn.com BlogIcon Kevin 2010.05.01 06:07 PERM MOD/DEL

    역시 지금도 홈페이지란에 블로그 주소를 넣으면 안 되는군요. 홈페이지 주소로 교체...

    Favicon of http://whiteship.me BlogIcon 기선 2010.05.02 11:11 PERM MOD/DEL

    다행히(?) 이 주소는 잘 되네요.ㅋ

  5. Favicon of http://google.com BlogIcon Kevin 2010.04.20 19:58 PERM. MOD/DEL REPLY

    왜 그런지 알았습니다.
    제 블로그 주소를 넣으니까 차단되었다고 나오면서
    등록이 안 되네요.
    희한하군요. 제 블로그가 왜 막힌건지?ㅡ_ㅡ?
    근데 이거 티스토리 버그 같습니다.
    새로 설치된 다른 티스토리에서도 같은 증상이 보이네요.

    혹시 구글 같은 사이트도 차단 되는지 시험해보니
    구글은 멀쩡하네요.

    티스토리에서 차단 하는 사이트 목록이나
    혹은 패턴에 제 사이트가 걸려든 모양입니다...ㅡ_ㅡ;

    근데 웃긴게 홈페이지 주소를 쓰니 정상적으로 등록되는데,
    블로그 페이지만 차단됐다고 뜨네요...ㅡ_ㅡ;

    전 그럼 이제 티스토리에 항의하러...ㅡ_ㅡ;;;

    Favicon of http://whiteship.me BlogIcon 기선 2010.04.21 07:31 PERM MOD/DEL

    오오오!! 드디어 보입니다.
    아흑.. 티스토리 왜이래 ㅠ_ㅠ

    워드프레스로 가고 싶어도 여기 올린게 하두 많아서 엄두를 못내고 있어요 @_@

    Favicon of http://lckymn.com BlogIcon Kevin 2010.05.01 06:09 PERM MOD/DEL

    이런...ㅡ_ㅡ;
    버그 신고하려고 보니, 무슨 개인정보 이용에 동의 어쩌고...
    짜증나서 관뒀습니다. @_@;

    Favicon of http://whiteship.me BlogIcon 기선 2010.05.02 11:10 PERM MOD/DEL

    ㅋㅋ글쿤요.

Write a comment.


[스프링 3.0 @MVC] 컨트롤러에 스프링 AOP가 적용되지 않는다는건 이제 거짓말

모하니?/Coding : 2010.02.17 14:49


@MVC를 사용하면 좋은 점 중 하나가 스프링 AOP 적용이 쉽다는 겁니다. 아직도 여러 이유로 이전의 Controller 계층 구조를 이용해서 개발하시는 분들이 많겠지만 @MVC를 사용하시는 분들은 이점을 꼭 알고 계셔야 합니다. 스프링 @MVC도 이제 스프링 AOP가 아주 잘 먹힙니다.

@Controller
public class TestController {

    @RequestMapping("/test")
    @Transactional
    public void test() {
        System.out.println("hi!!!!!!!!!!!!!!!!!!!!!!");
    }

}

하지만 그렇다고 해서 이런 코드를 작성해 달라는 것은 아닙니다. 절대로.. 네버..

어찌됐든 위와 같은 코드도 동작하게 되어있는데 경우에 따라서는 안 될 수도 있습니다. 그런 경우는 스프링 트랜잭션이나 스프링 시큐리티 애노테이션에 문제가 있는것이 아니라 빈설정과 관련이 있을 수가 있으니 빈 설정을 잘 보셔야 합니다.

만약 위와 같은 경우라면.. @Controller 빈이 만들어지는 ApplicationContext와 tx:annotation 머시기가 등록되는 ApplicationContext가 같은지 확인해봐야 합니다.

정말,, 굳이.. 컨트롤러에 AOP를 적용해야 한다면 http://toby.epril.com/?p=934 이 글따라서 DS가 만드는 WebAC 하나로 모두 통합하는 것도 좋겠습니다.
top

Write a comment.


Validator에도 여러 가지가 있네

모하니?/Coding : 2008.11.15 23:15


JSF 스캐(스크린캐스팅)를 찍다가 알게 된건데, 기본 검증기, Application-level 검증, 커스텀 검증기, 표준 검증기가 있었습니다.

기본 검증기는 프레임워크에서 제공하는 것으로 JSF에는 길이 검사라던가, 숫자가 최소치와 최대치 사이의 값인지 범위를 검사할 수 있는 기본 Validator들을 제공하고 있었습니다. 스프링 MVC는 어떨까요? 글쎄요. 없는 것 같네요. ValidationUtils는 있지만 JSF 처럼 간단하게 뷰에서 바로 써먹을 수 있는 건 없는 것 같습니다.

다음은 폼에서 이미 검증을 마쳐서 모델에 사용자가 입력한 데이터를 담은 상태로 비즈니스 로직을 검사하는 검증입니다. 이 검증은 프레임워크에 독립적이며 도메인 클래스가 해당 로직을 가지고 있기도 합니다. 예를 들어.. member.validateBy주민번호() 같은 메소드(주민등록 번호로 성별과 생년 월일이 일치하는지 검사하는 로직)를 만들고 이를 컨트롤러에서 호출한 다음에 예외를 잡아서 화면에 어떤 에러 메시지를 출력하는 방법이 있겠습니다. 비즈니스 로직에 적합한지 검사하려면 역시 화면에 붙어있는 검증기와는 별개로 이런게 필요한 것 같습니다. 스프링MVC에서도 검증 로직이 순전히 도메인 레벨에서 가능하다면 이런 식으로 검증할 수도 있겠습니다.

다음은 검증기는 검증기인데, 특정 인터페이스를 따르지도 않고 완전한 POJO 검증기 입니다. 위에서 애플리케이션 검증 로직을 별도의 클래스로 빼내고 그 로직을 뷰에서 값을 입력 받을 때 호출하게 하는 건데, JSF의 EL은 메소드 호출도 정말 간단하게 할 수 있더군요. 그냥 이런 검증기를 managed-bean으로 등록하고 그 로직을 호출하면 됐습니다. 검증 로직을 별도의 클래스로 분리하고 한 곳에서 관리할 때 좋겠습니다.

마지막은 스프링이 제공하는 Validator인터페이스 처럼 프레임워크의 틀에 맞는 검증기를 구현하고 그것을 설정하여 사용하는 겁니다. JSF에도 그런 구조가 갖춰져 있죠. 이 걸 사용하는 장점은 어떤 틀이 있기 때문에 위처럼 중구 난방으로 작성할 수 있는 코드에 규약을 정하고 그걸 따르는 검증기를 공유할 수 있다는 겁니다. JSF는 스프링 @MVC와 달리 이 검증 로직 실행을 프레임워크의 Phase 중에서 Validation Phase에 하기 때문에 이 검증 로직을 만족하지 못하면 모델에 값이 들어갈 수가 없습니다. 스프링은 아니죠. 일단 모델에 값을 받은 상태에서 검증을 하는거죠.

흠~~ 그래서 결론적으로 생각해볼 때, 여러 검증 단계와 방법을 제공하는 건 JSF가 더 좋아보이지만, 모델에 값을 설정한 상태에서 Validator라는 규격을 가지고 그 안에서 비즈니스 로직 검사도 수행(application-level 검증)도 할 수 있는.. 스프링 MVC의 단순한 구조가 오히려 개발을 더 깔끔하게 할 수 있게 해주지 않나 생각합니다. 모든 개발자가 검증 로직을 사방한대서 한다고 생각하면.. 어휴.. 끔찍하죠.ㅋㅋ
top

  1. Favicon of http://toby.epril.com BlogIcon 토비 2008.11.16 06:55 PERM. MOD/DEL REPLY

    spring-modules에 보면 view단에서 쓰는 배리데터도 있어.

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2008.11.16 12:38 신고 PERM MOD/DEL

    오호.. 그렇군요.

Write a comment.