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. Thanks again for the post.Thanks Again. Really Great.

  2. Touche. Solid arguments. Keep up the great spirit.

  3. Spot on with this write-up, I truly think this site needs much more attention. I’ll probably be returning to read more,thanks for the information!

  4. Many thanks! An abundance of information.
    viagra generic

  5. I wish I could craft such articles as this. Thank you very much.

  6. There as definately a great deal to learn about this subject. I like all of the points you have made.

  7. Cheers! A good amount of forum posts.
    neurontin 300 mg

  8. This is one awesome article post.Thanks Again. Really Great.

  9. please take a look at the web sites we comply with, like this 1, because it represents our picks in the web

  10. Here is a superb Weblog You may Come across Exciting that we Encourage You

  11. Pillule Alli Shop http://cheapcialisir.com – Buy Cialis On Line Amoxicilina In Internet Overnight Shipping Windsor Buy Cialis Propecia Substitutes Prescription

  12. Amazing tons of very good tips. buy cialis usa

  13. sure, analysis is paying off. Seriously handy perspective, many thanks for sharing.. Truly handy point of view, many thanks for expression.. Fantastic beliefs you have here..

  14. You ave made some good points there. I checked on the internet to find out more about the issue and found most people will go along with your views on this website.

  15. I think this is a real great blog.Really looking forward to read more. Fantastic.

  16. You have made your stand quite nicely.. cbd hemp oil

  17. hello!,I really like your writing so so much! proportion we communicate more approximately your post on AOL?I need a specialist on this space to resolve my problem.Maybe that is you! Having a look forward to peer you.

  18. Terrific stuff. Thanks a lot. london drugs canada

  19. Awesome forum posts, Regards. zestril lisinopril

  20. 2020…

    2020…

  21. The information and facts mentioned within the article are a few of the very best out there

  22. Excellent forum posts. Thank you! finasteride bnf

  23. I just want to say I am very new to blogs and truly savored you’re web site. More than likely I’m likely to bookmark your website . You amazingly come with superb articles and reviews. Regards for sharing your webpage.

  24. Fantastic info. Appreciate it. Purchase Metformin Without Prescription

  25. If you want to increase your familiarity simply keep visiting this web page and be updated with
    the hottest information posted here.

  26. I like this post, enjoyed this one appreciate it for putting up.

  27. You actually expressed this adequately. lisinopril 10mg

  28. Yeah, now it as clear ! And firstly I did not understand very much where there was the link with the title itself !!

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