Whiteship's Note


Spring MVC에서 사용하는 ApplicationContext와 WebApplicationContext



보통 스프링 설정 파일이 최소한 두 개이상 있을 겁니다. xxx-servlet.xml 과 나머지로 나눌 수 있습니다. 그중에서 xxx-servlet.xml은 DispatcherServlet이 WebApplicationContext를 만들 때 사용하고, 나머지는  ContextLoaderListener 또는 ContextLoaderServlet이 일반적인 ApplicationContext를 만들 때 사용합니다.

이게 끝이 아닙니다. WebApplicationContext는 바로 이 ApplicationContext를 상속받아서 여러 서블릿들이 공통으로 사용하는 빈들을 사용할 수 있게 되는 겁니다. 따라서 만들어지는 순서도 중요한데, Listener가 아니라 ContextLoaderServlet을 사용했을 때는 load 머시기 설정 값에 1을 줘서 DispatcherServlet보다 먼저 만들게 해야 합니다. 그래서 WebApplicationContext를 만들 때 해당 ApplicationContext를 상속받아서 그 안에 있는 빈들을 사용할 수 있게 되겠죠.

이런 구조로 설계한 건, DispatcherServlet이 하나의 웹 애플리케이션에서 여러 개일 수 있기 때문입니다. 여러 개의 DispatcherServlet에서 공통으로 사용할 빈들을 상위에 있는 ApplicationContext에 선언해두고 공유할 수 있게 하는 거죠.

사용자 삽입 이미지

자. 그럼 여기서 문제

만약에 스프링 2.5 컨트롤러를 사용하고 있고 이 컨트롤러에 특정 @Aspect를 적용하고 싶을 때 해당 AOP 관련 설정(aop:autoproxy 머시기 엘리먼트 + @Aspect 빈 등록)은 xxx-servlet.xml과 applicationContext.xml 둘 중 어디에 둬야 할까요?

xxx-servlet.xml에는 컨트롤러 설정, 뷰 리졸버, 핸들러 맵퍼 등의 설정이 되어 있고, applicationContext.xml에는 서비스, DAO 등의 설정이 들어있습니다.
 
ㄱ. xxx-servlet.xml
ㄴ. applicationContext.xml
ㄷ. 어디에 두든지 상관없다.
ㄹ. 스프링 2.5 컨트롤러에는 Spring AOP를 사용할 수 없다.

정답은?? ㄱ 입니다. 왜냐면, applicationContext.xml을 사용해서 ApplicationContext를 만드는 순간에는 컨트롤러들이 미쳐 빈으로 등록되어 있지도 않기 때문에, 프록시를 만들 대상이 없습니다. 다시 말해, AOP 빈은 있지만, 이 AOP를 적용할 대상이 되는 빈이 없는겁니다. 따라서 컨트롤러들과 관련된 설정이 있는 xxx-servlet.xml에 해당 설정을 위치해야 합니다.

'Spring MVC > 3장 Spring MVC' 카테고리의 다른 글

Spring MVC에서 사용하는 ApplicationContext와 WebApplicationContext  (6) 2008.07.03
Service Layer  (2) 2006.12.13
Web Layer  (0) 2006.12.12
User Interface Layer  (0) 2006.10.09
Layers of Abstractions  (0) 2006.10.08
top

  1. 이철우 2009.12.16 07:17 PERM. MOD/DEL REPLY

    순전히 제 생각인데요, ㄷ 같은데요. 이유는 ㄹ은 아닌것 같고, 처음 스프링 MVC 이용해서 간단한 Web Application 만들적에 xxx-servlet.xml 만 사용해서도 만들었거든요.
    하지만 비즈니스 로직은 ApplicationContext.xml 에 주로 두므로 ㄴ?

    저 혹시 AOP 에 관한 포스팅도 있나요? 개념은 20% 정도 이해 한것 같구요. 어떻게 구현하는지는 영 모르겠네요.

    좋은 하루 되세요.

    Favicon of http://whiteship.me BlogIcon 기선 2009.12.16 10:57 PERM MOD/DEL

    하핫 오래전에 낸 문제라 저도 잊었는데 이제야 푸시는 분이 등장하셨네요!! 정말 감사합니다.

    하지만, 정답은 본문 아래 빈공간에 적어두었습니다. 마우스로 드래그 해보세요.

    AOP 구현 방법에 대해서는 이따 살짝 올릴꼐요.

  2. 이철우 2009.12.16 15:05 PERM. MOD/DEL REPLY

    답변 감사합니다. 많이 배웠습니다.

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

    아 맞다; AOP 구현 써야겠네요;

  3. 이철우 2009.12.18 02:41 PERM. MOD/DEL REPLY

    AOP 엄청 좋은 거였네요.

    어제, SpringSource University (http://www.springsource.com/training/freeonline) 에서 Developing Aspects with AOP (http://www.springsource.com/training/freeonline/download?sid=246444) by Jeff Brown 라는 강의를 봤는데요, AOP 기초 개념을 아주 쉽게 설명해 주는군요. 오늘 한번 써볼려고 합니다.

    또 다른 공짜 강의가 있는데요 OSGi, Spring-dm, Spring-dm Server 에 관한 거구요, 제 많은 의문점들을 풀어주더군요. OSGi Training: OSGi and Modular Applications ( http://s3.springsource.com/MRKT/training/online-screencast-final.mp4 ) by Joris Kuipers

    Spring source tool suite 에서 스프링 디엠 서버 쓰기가 참 쉽군요. 그냥 '드래그 인 드랍' 하면 디플로이가 되니깐 말이죠. 그런데 greenpages 샘플에서 웹사이트가 접근이 않되는군요. 리소스를 몾찾겠다고 그러네요, 뭐가 문젠가 시간좀 보내야 겠네요.

    좋은 하루 되세요.

    Favicon of http://whiteship.me BlogIcon 기선 2009.12.18 10:26 PERM MOD/DEL

    넹 좋아요!

    우와;; 그새 저 많은 걸 보시다니;; 멋지세요.

Write a comment.


20080702 GMP

모하니?/GMPing : 2008.07.02 10:00


News

Competition 컴ㅍ티션
Nation 네이시언
National 네셔널
Purpose 펄포스
Charter 챠러: 헌장, 전세낸(rented)
Stress : 강조하다
Patriotism 페이트리오티즘

While the olympic charter stresses pieceful competition, it is also a time of suging national pride. Patiorism can give athletes sense of purpose beyond personal acheivement.

Screen English

Why are you smiling?
I just never thought I'd here you say 'what about my studies'. It makes me like.. smile.(그게 말이지 음.. 날 좀 웃게 만드는 구나.)
I don't wanna go.
We do this every year.
It's the only time we get together.

응용
Why are you giving up so easyly?
I just never thought I'll be so luckly.

Pops English(Wake Me Up Before You Go-Go)

Wake me up before you go go.
Don't leave me hanging on like a yo-yo.

Wake me up before you go go.
I don't wanna miss it when you hit that high.

Talk Play Learn

Do you know what I like?
Do you know what I see?
Do you know what I want?
Do you know what I have?
Do you know what I mean?
Do you know what I admire?
Do you know what I like the most?
Do you know what I hate the most?

Sound Sound Play(s다음에 오는 t발음)

stop 스땁
style 스따일
store 스또어
story 스또리
start 스따트
stock 스딱
status 스떼이터스: 지위, 신분

I don't know much about stocks.

Learn Mores

간단히 말하자면.. =  In a nut shell
대략난감 = No way out



'모하니? > GMPing' 카테고리의 다른 글

20080715 GMP  (0) 2008.07.15
20080710 GMP  (0) 2008.07.10
20080708 GMP  (0) 2008.07.08
20080707 GMP  (0) 2008.07.07
20080705 GMP  (0) 2008.07.05
20080704 GMP  (0) 2008.07.04
20080703 GMP  (0) 2008.07.03
20080702 GMP  (0) 2008.07.02
20080701 GMP  (0) 2008.07.01
20080627 GMP  (0) 2008.06.27
20080626 GMP  (0) 2008.06.26
top

TAG GMP

Write a comment.


Ivy로 메이븐 저장소를 사용하기



Maven이 의존성 관리나, 다양한 플러그인들, 기본 와꾸 만들어주기(아키타입) 등의 기능 면에서 좋긴 한데, 학습 곡선 높고(Ant에 비해), 적응 시간이 오래 걸린다는(역시 Ant에 비해) 단점이 있습니다.

의존성 관리는 사실 사람이 개입하지 않고서 자동으로 처리하기는 참으로 난감한데, 그래도 초기에 한 번 고생하고, 주기적으로 한 시간간 정도만 고생하면 모든 라이브러리들을 CVS나 SVN에 들고다니지 않아도 되서 정말 편합니다. 구글코드 같은 경우 jar 파일을 다운로드/업로드 하다가 인터넷 연결 끊어져서 다시 커밋하거나 업데이트 받아야 하는 불상사가 생기기도 하죠. 따라서, 어찌됐든 의존성들은 버전 관리 저장소에서 빼주는게 훨씬 편합니다. 그러면서도 버전관리까지 해주는 Maven이 고맙기도 하지만, 사실 개발자가 고생한거지 Maven은 그냥 시킨대로 해줬을 뿐입니다. 그래도 하나 고마운게 있다면, 저장소. 로컬 저장소에 없으면 원격 저장소에서 다운로드 받을 수 있는 그 저장소가 좋습니다.

그런데 Ant에서도 이 메이븐 저장소(본문에서는 Common Repository라는 단어를 사용하고 있는데, 메이븐만 이용할 수 있는 저장소가 아니니까 이게 더 맞는 표현 같네요. 번역은 "공공 저장소" 라고 하고 있습니다.)를 이용할 수 있습니다. 따라서 굳이 Maven을 학습하지 않고 Ant 서브프로젝트인 Ivy의 task 몇 개만 살펴보시면 됩니다.

http://www.ibm.com/developerworks/java/library/j-ap05068/index.html

현재 번역 중이며 7월 중에 IBM DeveloperWorks에 올라갈 것 같네요.

top

Write a comment.


이클립스 가니메데 플러그인 설치가 달라졌다.

Good Tools : 2008.07.01 21:52


우선 Eclipse를 받아서 실행했습니다. 다음은 필요한 플러그인들을 설치해야겠죠.

스프링 IDE 업데이트 사이트를 추가해봤습니다.
http://springide.org/updatesite

그랬더니..
사용자 삽입 이미지
자동으로 Spring IDE 플러그인이 의존하는 다른 플러그인 사이트가 등록됩니다. 오호... 플러그인 설치 화면도 약간 달라졌죠. 세부 메뉴를 보여줍니다. 그 뒤 설치 과정은 이전과 동일합니다.
사용자 삽입 이미지
설치가 다 되면, 재시작합니다.

사용자 삽입 이미지

귿.
top

  1. Favicon of http://blog.naver.com/knbawe.do BlogIcon 짱가 2008.07.02 00:56 PERM. MOD/DEL REPLY

    전보다 덜 직관적이고 중복된 플러그인도 찾아 오는 것 같아서
    초반이라서 그렇겠지만, 별로 맘에 안듭디다.

    Favicon of http://whiteship.tistory.com BlogIcon 기선 2008.07.02 08:03 PERM MOD/DEL

    넹..아직 출시된지 얼마 안된지라. 자잘한 문제들이 있는 것 같네요. :)

  2. Favicon of http://www.timberlandbaratas.com BlogIcon Timberland shops 2012.12.25 12:21 PERM. MOD/DEL REPLY

    The biggest British Airline , http://www.timberlandbaratas.com zapatos timberland?British Airways? last year had a record loss of 400 million pounds, http://www.timberlandbaratas.com timberland españa, it is announced today in London. The main reasons for the loss are high prices of airplane fuel and weak standing of the British Pound. This is the biggest loss of this company since 1987 what it was privatized, http://www.timberlandbaratas.com Mujer Timberland.For now there are no signs for recuperation of the economy in all sectors which is a sign for another hard year, http://www.timberlandbaratas.com Hombre Timberland. Company's fuel expenses are increased by 44, http://www.timberlandbaratas.com Timberland,5% while the downfall of the British pound towards American Dollar, further made the situation difficult since its supplies of fuel are purchased in Dollars, http://www.timberlandbaratas.com timberland niños.Related articles:


    http://www.yongwanee.com/16 Un attentat suicide perpétré

    http://visualcommunication.tistory.com/597 Le football bulgare est géré par des patrons de la mafia qui s'en servent pour blanchir de l'argen

Write a comment.


HP 컬러레이저젯 이벤트 하네요.





체험단을 1215명이나 모집해서 1215였군요. 체험단에 들면 프린터를 주는건가~ 오호~
top

Write a comment.


엑셀 시트 복사하기(with POI) + 리팩터링

모하니?/Coding : 2008.07.01 13:09


    private void copySheet(HSSFSheet from, HSSFSheet to) {
        HSSFRow firstRow = from.getRow(0);
        HSSFRow secondRow = from.getRow(1);
        HSSFRow thirdRow = from.getRow(2);
        
        HSSFRow firstRow2 = to.createRow(0);
        HSSFRow secondRow2 = to.createRow(1);
        HSSFRow thirdRow2 = to.createRow(2);
        
        Iterator<HSSFCell> iterator = firstRow.cellIterator();
        short col = 0;
        while(iterator.hasNext())
            addCell(firstRow2, col++, iterator.next().getStringCellValue());
        
        col = 0;
        iterator = secondRow.cellIterator();
        while(iterator.hasNext())
            addCell(secondRow2, col++, iterator.next().getStringCellValue());

        col = 0;
        iterator = thirdRow.cellIterator();
        while(iterator.hasNext())
            addCell(thirdRow2, col++, iterator.next().getStringCellValue());
    }

무려 세 번이나 중복되고 있지만, 일단 기능이 제대로 돌아가는지부터 보려고 허겁 지겁 코딩을 하고 결과를 확인해 보니 괜춘하네요. 여기서 그만 둘까도 생각했지만, 에이~ 뭐 시간도 많은데 저런걸 그냥 두긴 뭐하다 싶어서 리팩터링..

    private void copySheet(HSSFSheet from, HSSFSheet to, int fromRowCnt, int toRowCnt) {
        HSSFRow fromRow = null;
        HSSFRow toRow = null;
        for(int i = fromRowCnt ; i <= toRowCnt ; i++){
            fromRow = from.getRow(i);
            toRow = to.createRow(i);
            Iterator<HSSFCell> iterator = fromRow.cellIterator();
            short col = 0;
            while(iterator.hasNext())
                addCell(toRow, col++, iterator.next().getStringCellValue());
        }
    }

리팩터링 하는 김에 좀 더 Generic하게 만들어서 몇 번째 줄부터 몇 번째 줄까지 복사할지 인자로 넘겨주도록 수정 함. 이제 저 메소드는 ExcelUtils로 옮기면 ExelView쪽 코드는 약간 더 깔끔해지겠죠. 그건 뭐 간단하니 생략합니다.
top

Write a comment.


20080701 GMP

모하니?/GMPing : 2008.07.01 09:46


News

feet: 건장한, 발(복수형)
heel: 신발 뒤 축
bare: 벗은
-itis: -염증

Screen English(Dan in love)

I'll pack up the car = I'll load the car. Pick you up right after school and then we'll drive streight throw.
Sound good. does not.
What now~ Ins't the whole point that we go to school.
And now you are forcing us to miss school when we should be in school.

Sounds good. = That's it. = Sounds great.

Ins't the whole point that ~~?: 전체 요점이 ~~ 아닌가요?
Ins't the whole point that we enjoy our life?

forcing ~ to: 강요하다
You are forcing us to be upset we you.

Talk Play Learn

Do you know anyone who can ~ ? ~ 할 수 있는 사람 아니?
Do you know anyone who can cook?
Do you know anyone who can drive?
Do you know anyone who can help us?
Do you know anyone who can run faster?
Do you know anyone who can come by?
Do you know anyone who can speak English?
Do you know anyone who can play the piano?
Do you know anyone who can fix my computer?

Sound Sound Play

s다음에 p가 오면 "스쁘"

spread 스쁘레드: 넓게 바르다
speak 스삨
spill 스삘: 업지르다
speed 스삐드
special 스뻬셜
spoil 스뽀일: 망치다.
sports 스뽈츠

Today Expression

two over kind 같은 종류의 두 사람

'모하니? > GMPing' 카테고리의 다른 글

20080715 GMP  (0) 2008.07.15
20080710 GMP  (0) 2008.07.10
20080708 GMP  (0) 2008.07.08
20080707 GMP  (0) 2008.07.07
20080705 GMP  (0) 2008.07.05
20080704 GMP  (0) 2008.07.04
20080703 GMP  (0) 2008.07.03
20080702 GMP  (0) 2008.07.02
20080701 GMP  (0) 2008.07.01
20080627 GMP  (0) 2008.06.27
20080626 GMP  (0) 2008.06.26
top

TAG GMP

Write a comment.


Yaari 라는 메일에 온 링크로 가지 마세요~



에구구 저는 또 뭔 새로운 SNS 사이트인 줄 알고 가입하려다 보니까, 미팅 사이트라고 하네요. ㄷㄷㄷ
제 메일 주소록에 있던 분들에게 메일이 보내진 것 같은데 죄송합니다.
사용자 삽입 이미지

top

TAG yaari, 스팸
  1. Favicon of http://theeye.pe.kr BlogIcon 아이 2008.07.01 10:04 PERM. MOD/DEL REPLY

    ㅎㅎ 제가 지금 메일 보고 링크 누를려다가, 무엇인지 쓰셨을꺼 같아서 블로그 와서 이글 봅니다~
    무턱대로 링크 눌렀으면 큰일날뻔 했네요~ㅎㅎ

    Favicon of http://whiteship.tistory.com BlogIcon 기선 2008.07.01 11:17 PERM MOD/DEL

    클릭은 상관없는데 가입까지하면 스팸이 가더군요.ㅋㅋ

  2. Favicon of http://gerions.egloos.com BlogIcon 윤걸 2008.07.01 10:15 PERM. MOD/DEL REPLY

    음... 기선스팸이 몇통 날아왔군... ㅋㅋㅋ
    미팅에 관심이 많은게로군...

    Favicon of http://whiteship.tistory.com BlogIcon 기선 2008.07.01 11:17 PERM MOD/DEL

    아흑...

  3. Favicon of http://benelog.egloos.com BlogIcon benelog 2008.07.01 10:28 PERM. MOD/DEL REPLY

    이미 가입하고 나서 봤습니다. TT

    Favicon of http://whiteship.tistory.com BlogIcon 기선 2008.07.01 11:17 PERM MOD/DEL

    에구 죄송합니다.

  4. Favicon of https://naztica.tistory.com BlogIcon Naztica 2008.07.01 10:36 신고 PERM. MOD/DEL REPLY

    어흐흐흑 ㅠㅠ 기선님을 믿었는데 ㅠㅠ

    Favicon of http://whiteship.tistory.com BlogIcon 기선 2008.07.01 11:17 PERM MOD/DEL

    흑.. 죄송합니다.

  5. Favicon of http://evilimp.tistory.com BlogIcon evilimp 2008.07.01 11:17 PERM. MOD/DEL REPLY

    -_-;;;;
    역시 그냥 지우길 잘했다는....

    Favicon of http://whiteship.tistory.com BlogIcon 기선 2008.07.01 12:47 PERM MOD/DEL

    네 잘하셨습니당.ㅋㅋ

  6. Favicon of http://sonegy.egloos.com BlogIcon 소내기 2008.07.01 13:03 PERM. MOD/DEL REPLY

    이것때문에 바쁜신게로군요!!! 전 유심히 사이트 살펴보았더랬죠.

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2008.07.01 13:27 신고 PERM MOD/DEL

    넵. 오늘 아주 대박 실수를 했네요.ㅋㅋ

  7. Favicon of http://koko8829.tistory.com BlogIcon 열이아빠 2008.07.16 13:08 PERM. MOD/DEL REPLY

    younghoe ahn wants you to join Yaari! 라는 메일이 왔길래 혹시나 해서 검색해 보았더니..
    그런 거였군요.

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2008.07.16 13:28 신고 PERM MOD/DEL

    넵. 메일을 열고, 링크를 클릭해도 별로 상관은 없습니다. 바이러스는 아니기 때문에요.ㅋㅋ

Write a comment.




: 1 : 2 : 3 : 4 :