3.0에 추가된 SpEL의 활용방법은 매우 다양하다. SpEL을 사용하면 기존에 애용되던 ${}와 <context:property-placeholder>를 대체할 수도 있다.

${}로 property place holder를 만들어 두고 프로퍼티 파일을 읽어서 value를 바꿔치기 하는 방법은 환경에 따라서 자주 변하는 DB연결정보와 같은 설정정보를 XML이나 소스코드에서 분리시킬 수 있다는 장점이 있다. SRP에 따르면 responsibility, 즉 변하는 이유가 다르면 분리해야 한다. 설정 정보도 마찬가지다.

${} 방식의 단점은 프로퍼티 파일의 키 값에 ${ prefix와 } suffix를 붙여서 find-and-replace 방식으로 동작한다는 점이다. 매칭되는 키 값이 존재하지 않으면 ${} 부분이 그대로 남을 수 있다. 설정을 빼먹은 것이라면 모르겠지만 오타로 인해서 이름을 잘못 적거나 ${}을 제대로 넣지 않아도 경고 없이 그냥 넘어간다. 내부적으로는 BFPP에 의해서 동작하는 것이므로 ${}을 가진 빈 입장에서는 수동적이다. 남이 변경해주면 고맙고 아니어도 불평을 할 수 없다.

반면에 SpEL을 사용하는 방법은 능동적이다. SpEL로 property-placeholder를 대체하면 BFPP를 사용하지 않아도 된다. <util:properties>를 이용해서 프로퍼티 파일을 Properties 타입의 빈으로 생성하게 하고 다른 빈 오브젝트에 접근할 수 있는 SpEL을 이용해서 원하는 프로퍼티 값을 찾아오게 만들면 된다.

<util:properties id=”dbpr” location=”…” /> 이라고 되어있다면,

<property name=”username” value=”#{dbpr[‘username’]}” /> 으로 만들어주면된다. []는 Map 오브젝트의 get()을 호출해주는 SpEL의 표현이다.

SpEL은 능동적이다. 자기가 필요한 정보를 원하는 프로퍼티 정보를 담은 빈에 가서 직접 찾아오는 것이다. Properties빈이 존재하지 않으면 에러도 발생시켜준다. 물론 Map의 get()이라 키에 해당하는 값이 없어도 그냥 null이 들어간다는 한계는 있다. 수식을 좀 길게 쓰면 null인 경우에 오류가 발생하게 만드는 것도 가능할 것이다.

${}는 기존 설정의 호환성과 익숙한 방식의 집착 때문에라도 앞으로 오랜동안 사용될 것이다. context 스키마에서 직접 지원해주는 기능이기도 하고. 하지만 나는 SpEL을 사용하는 능동적인 방식으로 모두 바꿀 생각이다. 더 명시적이고, 구체적이고, 이해하기 쉽고, 오류도 잘 잡아주는 SpEL 방식이 더 맘에 들기 때문이다.

Related posts:

  1. Spring 3.0 EL (Spel)을 이용한 AssertThrows 확장 (3)
  2. Spring 3.0 EL (Spel)을 이용한 AssertThrows 확장 (2)
  3. Spring Expressions(SpEL)를 이용한 Mockito Argument Matcher 만들기
  4. Spring 3.0 EL (Spel)을 이용한 AssertThrows 확장 (1)
  5. 스프링 컨테이너에는 설정파일이 없다
  6. 톰캣 앞에 아파치 웹 서버(Httpd)를 두어야 할까?
  7. Maven archetype 설정파일 자동생성기 – ArchetypeXmlWriter
  8. 파이썬 완벽 가이드 전자책
  9. Spring 2.0의 XML확장기능 (1)
  10. 스프링 3.1 (7) 프로퍼티 소스 추상화와 PropertySourcePlaceholderConfigurer
  11. Inside Spring (5) PropertyPlaceholderConfigurer를 @Bean으로 정의해서는 안되는 이유
  12. Spring 3.0 (28) R-669 Update
  13. Spring 3.0 (52) 반쪽짜리 3.0 RC1 공개
  14. Spring 3.0 (36) Field Marker와 Field Default
  15. Spring 3.0 (2) R-518 스프링의 새 모듈 OXM(Object/XML Mapping)

Facebook comments:

to “Spring 3.0 (59) 프로퍼티 파일 이용하기 – placeholder vs SpEL”

  1. 아핫! SpEL을 저렇게 활용할 수가 있군요.
    당장 적용해봐야겠어요.

  2. 다른 얘기인데, 책은 언체 퍼블리쉬 하시나요? ^^

  3. Richpapa/ 내년 초에 출간 예정입니다.

  4. 뭐때문에 el 태그를 쓰나 했더니…역시..빠르십니다.

  5. 관련글은 아니지만 방명록이 따로 없어서 여기에 댓글 남깁니다. ^^
    올해는 토비님 덕에 Spring에 대해서 새로운 마음가짐도 생기고(한국에 들어오셨을때) 블로그를 통해서 많은 것을(아직은 제가 다 이해는 못해도) 배울 수 있었던것 같습니다.
    Toby님도 마지막하루 마무리 잘 하시고 내년에도 새해복 많이받으시고 계획하시는 일 다 이루시길 바라겠습니다.
    염치없지만 내년에도 좋은 정보 부탁드리겠습니다. ^^(책도 기대중입니다.ㅎ)

  6. Toby님, 새해 복 많이 받으세요~

    저는 연말이건 연초건 연휴건 일 하느라 정신없는데다가,
    몇가지 자잘한 집수리 때문에 정신없이 지내고 있습니다만…

    Toby님께서도 책 쓰시랴, 일 하시랴, 가족 돌보시랴
    아주 바쁘게 보내고 계실것 같네요.

    2010년 하시는 일 잘되고, 쓰시는 책이 베스트셀러 되길 기원합니다.

  7. Outsider, Kevin/ 고맙습니다. 새해 복 많이 받으세요.

  8. rORJrx hgmmkclasbmg, [url=http://otsyuqvpnzkc.com/]otsyuqvpnzkc[/url], [link=http://hnnmirzpgunj.com/]hnnmirzpgunj[/link], http://slgaaxizsqgb.com/

  9. Click Here For More Info

  10. Hello Web Admin, I noticed that your On-Page SEO is is missing a few factors, for one you do not use all three H tags in your post, also I notice that you are not using bold or italics properly in your SEO optimization. On-Page SEO means more now than ever since the new Google update: Panda. No longer are backlinks and simply pinging or sending out a RSS feed the key to getting Google PageRank or Alexa Rankings, You now NEED On-Page SEO. So what is good On-Page SEO?First your keyword must appear in the title.Then it must appear in the URL.You have to optimize your keyword and make sure that it has a nice keyword density of 3-5% in your article with relevant LSI (Latent Semantic Indexing). Then you should spread all H1,H2,H3 tags in your article.Your Keyword should appear in your first paragraph and in the last sentence of the page. You should have relevant usage of Bold and italics of your keyword.There should be one internal link to a page on your blog and you should have one image with an alt tag that has your keyword….wait there’s even more Now what if i told you there was a simple WordPress plugin that does all the On-Page SEO, and automatically for you? That’s right AUTOMATICALLY, just watch this 4minute video for more information at. Seo Plugin

  11. E ‘indubbiamente vero che Google è il miglior motore di ricerca in questo mondo. Nella generazione moderna, la maggior parte della ricerca di persone per le loro informazioni richieste su Google a cercare i prodotti, i servizi e le informazioni che stanno cercando. Pertanto, Google stessa anche bisogno di lavorare sulla sua ottimizzazione dei motori di ricerca (SEO) .. Quando mi sono alzato per parlare, ho aperto la bocca e ho dato il mio miglior discorso mai fino a quel momento. Ora io prego sempre prima di parlare. Oltre a Ho voglia di sarà la Tua volontà, io prego da dare alle parole che toccheranno i cuori e le menti dei miei ascoltatori ..

  12. thank you for share!

  13. thank you for share!

  14. thank you for share!

  15. Visit THIS WebSite
    [url=http://www.2itm.com/uploads/indexnl.php?/barneys-moncler-jacketsmonclerofficial-website.html]barneys moncler jackets[/url]
    barneys moncler jackets

  16. its gucci time remix lyrics Spring 3.0 (59) 프로퍼티 파일 이용하기 – placeholder vs SpEL » Toby’s Epril

  17. gucci outlet in texas Spring 3.0 (59) 프로퍼티 파일 이용하기 – placeholder vs SpEL » Toby’s Epril

  18. You Can Check HERE
    [url=http://bootsforwomenoutlet.com]uggs on sale for women[/url]
    uggs on sale for women

  19. cheap shoes sale Spring 3.0 (59) 프로퍼티 파일 이용하기 – placeholder vs SpEL » Toby’s Epril

  20. Have A Peek At This Site
    [url=http://cheapbaileybuttonoutlet.com]kids uggs[/url]
    kids uggs

  21. proton 3 watersports women’s teva shoes discount Spring 3.0 (59) 프로퍼티 파일 이용하기 – placeholder vs SpEL » Toby’s Epril

  22. mbt the anti shoe review Spring 3.0 (59) 프로퍼티 파일 이용하기 – placeholder vs SpEL » Toby’s Epril

  23. I noticed that it’s hard to find your site in google, i found it on 25th spot, you should build some quality backlinks to rank it in google and increase traffic. I had the same problem with my site, your should search in google for – k2 seo services – it helped me a lot

  24. Listed Companies 2012 Annual Report Regu giubbotti peuterey donna lated scene exposure■ reporter Hou sac longchamp Jie NingReporter on the 27th learned from the China Securities Regulatory Commission, the Commission is currently 36 Regulatory Bureau has completed the 319 listed companies (only motherboard and small chaussure louboutin femme plates) of annual on-si

  25. Really movie is the presentation of some one’s feelings; it provides the lesson to the visitors.
    air max 90

Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2017 Toby's Epril Suffusion theme by Sayontan Sinha