BeanDefinitionParser를 만드는 것이 XML설정방법을 확장한 custom tag를 만드는 핵심과정이다. 이제는 그 외에 필요한 작업을 알아보자.

Custom Tag 개발순서

  1. Schema 작성
  2. NamespaceHandler 개발
  3. BeanDefinitionParser 개발
  4. 등록파일 (handler, schema) 작성

Schema 작성

만들고자하는 태그가 포함될 namespace의 schema를 만든다. 툴을 쓰건 직접 만들 건 schema를 만든다. 일반적인 schema 생성방법과 다를 바 하나 없다.

Schema작성방법에 대해서 알고 싶다면 XML 서적을 찾아서 공부하던가 w3c사이트에 나온 다음의 문서를 공부하면 될 것이다. 한시간이면 기초적인 스키마 작성방법을 마스터 하기에 충분하다고 본다.

NamespaceHandler 개발

NamespaceHandler는 namespace당 한개씩 필요하다. 각 tag를 담당하는 BeanDefinitionParser를 등록하는 것이 그 역할이다.

public class SampleNamespaceHandler extends NamespaceHandlerSupport {

public void init() {
    registerBeanDefinitionParser(“dateformat”, new     SimpleDateFormatBeanDefinitionParser());
    registerBeanDefinitionParser(“twobeanswithid”, new TwoBeansWithIdBeanDefinitionParser());
}
}

init() 메소드안에 tag이름과 BDP인스턴스를 함께 등록해준다.

BeanDefinitionParser

앞의 글에 적은 내용 그대로.

등록파일 (handler, schema) 작성

META-INF 밑에 다음의 두개의 파일을 작성한다. Spring이 이를 참조해서 bean등록을 담당할 NamespaceHandler를 사용하게 해준다.

  • spring.handlers : Namespace URI와 Handler class를 매핑해준다

http\://www.epril.com/schema/myns=sample.namespace.SampleNamespaceHandler

  • spring.schemas : Namespace URI와 schema 파일을 매핑해준다

http\://www.epril.com/schema/myns/myns.xsd=sample/namespace/sampleschema.xsd

 

이제 개발완료다. Spring 설정파일에 namespace를 추가하고 사용하면 끝.

 

좀 더 해볼 것

Normal bean에 사용할 수 있는 attribute를 개발할 수 있다. p: 애트리뷰트의 사용이 그 한 예다.

p:를 사용하면 schema 작성 없이 다이나믹하게 애트리뷰트이름을 프로퍼티이름으로 하는 값을 세팅할 수 있다. 이것만 써도 빈 설정이 간단해진다.

<bean id=”a” class=”c”>
  <property name=”tel” value=”123″ />
  <property name=”addr” value=”seoul” />
  <property name=”user” ref=”userbean” />
</bean>

이것을 p attribute를 이용해서 변경하면

<bean id=”a” class=”c” p:tel=”123″ p:addr=”seoul” p:user-ref=”userbean” />

로 바꿀수 있다.

BeanDefinitionDecorator를 이용한 것이다. 말 그대로 이미 설정이 된 bean에 추가적인 데코레이션 작업이 가능하다.

 

AOP를 이용한 annotation based bean 등록용 tag 개발. 이건 잘 쓰면 아주 편리하다. Annotation기반의 pointcut을 활용해서 대상 bean의 후보를 선택하고 이를 프로퍼티로 설정한다거나 빈을 생성한다거나 등등의 작업이 가능할 것이다.

 

이 글을 보는 스프링 개발자들에게

블로그에 공부한 내용을 정리할 때는 나름 읽게 될 독자를 고려하고 글을 쓰려고 하지만 그래도 시간을 많이 사용하기는 어렵기 때문에 글을 좀 성의없이 쓴다. -_-; 하지만 한편으로는 이런 글을 남기면 과연 한명이라도 이 글의 도움을 받아서 이 내용을 직접 적용해보고 공부하는 사람이 있을까 의문이기도 하다. 혹시 이 글을 참조로 직접 custom tag를 개발해본 사람이 있다면 댓글이나 이멜을 통해서 알려준다면 앞으로도 이런 글을 많이 올려볼 생각이다.

Related posts:

  1. Spring 2.0의 XML확장기능 (2)
  2. Spring 2.0의 XML확장기능 (1)
  3. Spring 3.0 (58) Static Class를 XML없이 빈으로 등록하기
  4. 스프링 3.1 (6) web.xml의 활성 프로파일 설정
  5. Maven settings.xml의 비밀번호 암호화
  6. S1A 2008 셋째날 – Spring JavaConfig
  7. InsideSpring (1) Annotated Factory Method (@Configuration)을 쓰는 4가지 방법 (3)
  8. Spring 3.0 (52) 반쪽짜리 3.0 RC1 공개
  9. Spring 3.0 (28) R-669 Update
  10. Spring 3.0 (56) @Bean 사용의 주의사항
  11. Spring 3.0 (46) Spring 3.0 M4 릴리스
  12. 미리 보는 Spring 3.0.1의 변경사항
  13. Spring 3.0 (54) 드디어 등장한 ConfigurationClassApplicationContext
  14. Spring 3.0 (4) – Maven에서 Spring 3.0 최신버전 사용하기
  15. 유쾌한 이슈처리 재촉 메일

Facebook comments:

to “Spring 2.0 XML확장기능 (3)”

  1. You can certainly see your expertise in the work you write. The world hopes for even more passionate writers like you who are not afraid to say how they believe. Always follow your heart.

  2. one of our visitors lately suggested the following website

  3. Enjoyed every bit of your article.Really thank you! Will read on…

  4. see if there are any complaints or grievances against him.

  5. A round of applause for your article post.Really looking forward to read more. Much obliged.

  6. There as noticeably a bundle to find out about this. I assume you made sure good points in features also.

  7. I really liked your post. Really Cool.

  8. A round of applause for your article post. Want more.

  9. I think this is a real great blog post.Thanks Again. Fantastic.

  10. I am often to running a blog and i really appreciate your content. The article has really peaks my interest. I’m going to bookmark your web site and preserve checking for new information.

  11. very nice put up, i actually love this web site, keep on it

  12. very handful of internet websites that occur to be in depth below, from our point of view are undoubtedly effectively really worth checking out

  13. Thanks so much for the article.Much thanks again. Cool.

  14. Say, you got a nice article.Thanks Again. Fantastic.

  15. Real fantastic information can be found on site. I can think of nothing less pleasurable than a life devoted to pleasure. by John D. Rockefeller.

  16. I think other web-site proprietors should take this website as an model, very clean and great user friendly style and design, let alone the content. You are an expert in this topic!

  17. The data talked about in the article are some of the top offered

  18. Thank you ever so for you blog.Thanks Again. Really Cool.

  19. Im thankful for the post.Really looking forward to read more. Really Cool.

  20. I was suggested this web site via my cousin. I’m now not sure whether this put up is written via him
    as no one else recognise such distinctive about my trouble.
    You are amazing! Thanks!

  21. wow, awesome blog post.Thanks Again. Want more.

  22. The text is promising, will place the site to my favorites..!

  23. Very informative blog article.Really looking forward to read more. Great.

  24. Thanks-a-mundo for the blog article.Really thank you! Awesome.

  25. Its like you read my mind! You appear to know a lot about this, like you wrote the book in it or something.

    I think that you can do with a few pics to drive the message home a little bit, but other
    than that, this is fantastic blog. An excellent read.
    I’ll certainly be back.

  26. This is one awesome blog post.Thanks Again. Awesome.

  27. After looking at a few of the articles on your site, I truly appreciate your technique of blogging.
    I book-marked it to my bookmark webpage list and will be checking back in the near
    future. Please visit my website too and tell me how you feel.

  28. Wonderful story, reckoned we could combine a handful of unrelated data, nevertheless genuinely really worth taking a look, whoa did one particular understand about Mid East has got more problerms too

  29. the time to study or stop by the content material or web pages we’ve linked to beneath the

  30. check beneath, are some totally unrelated internet websites to ours, nonetheless, they may be most trustworthy sources that we use

  31. Great blog.Really thank you! Fantastic.

  32. wow, awesome blog post.Really thank you! Cool.

  33. the time to study or pay a visit to the material or internet sites we’ve linked to below the

  34. one of our visitors just lately proposed the following website

  35. always a large fan of linking to bloggers that I appreciate but dont get a good deal of link really like from

  36. You may have some true insight. Why not hold some kind of contest for the readers?

  37. I simply could not go away your web site prior to suggesting that I extremely enjoyed the usual information an individual supply to your visitors? Is gonna be back frequently to check out new posts

  38. That is a very good tip especially to those fresh to the blogosphere. Brief but very precise information Thanks for sharing this one. A must read post!

  39. although web sites we backlink to below are considerably not related to ours, we really feel they may be truly worth a go by means of, so possess a look

  40. below youll uncover the link to some websites that we feel you ought to visit

  41. Wonderful story, reckoned we could combine a couple of unrelated information, nevertheless really really worth taking a appear, whoa did one particular discover about Mid East has got much more problerms as well

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