제목에서 말하는 유틸클래스는 바로 PropertyUtils 라는클래스입니다.
http://commons.apache.org/beanutils/apidocs/org/apache/commons/beanutils/PropertyUtils.html
위 링크를 따라가시면 해당 클래스에 대한 document가 있습니다.
저는 어떤 경유에 저걸 쓰게 되었냐면;;;
client 에서 넘어온 json data를 바로 객체로 생성하려하는 데에 마땅한걸 찾기가 쉽지 않더라구요;;
사실 mkyoung 라는 엄청나게 많은 튜토리얼을 제공하는 블로그에서 얼핏
jackson 이라는 json 라이브러리를 보긴 했으나 무심코 지나갔죠 ㅠㅠ
그리고 잘못된 키워드 검색으로 json-simple에 목매달게 되었는데 제가 잘 못쓰는건지... 제공을 안하는건지
원하는게 나오지 않더라구요. ㅠ
(client에서는 객체화하려는 클래스에 mapping되도록 key:value 들을 묶음으로 리스트로 보내오거든요,
그래서 그 하나의 묶음이 하나의 객체로 생성해야했으며 또한 이 객체들은 리스트로 담아야 했죠 ㅠㅠ)
여튼 위와 같은 상황에서 객체 생성해서 data를 set하지 못하다보니 생각한게 reflection 이었죠.
근데 이 작업이 무척 귀찮아지려는 즈음에 저 유틸클래스를 찾았습니다.
사용법은 엄청 간단합니다.
class Human{ private byte age; private String name; } public class Test{ public static void main(String[] args){ Human human = new Human(); byte age = 29; String name = "munsu"; PropertyUtils.setProperty(human, "age", age); // set : age = 29 PropertyUtils.setProperty(human, "name", name); // set : name = "munsu" } }
위처럼 쓰시면 되겠습니다.
개인적으로 String을 객체화하거나 immutable 객체를 접근할때 엄청나게 유용하겠다는 생각이 드네요.
(물론 필요에 의해서 저 메소드만 작업해봤기에;;; 다른 기타 기능도 어서 살펴봐야겠네요 ㅡㅡ;;;)
....
검색해보니 bindgen 이라는 유틸이 또 있네요.
성능은 propertyUtil 을 쓰는 것보다 훨씬 좋게 나오는 것 같아요.
(단순히 동적으로 클래스를 찾아서 property를 binding할거라면 말이죠.
이 부분은 아직 구현도 안해봤으나 혹시나 제 블로그를 보시고
PropertyUtil 을 사용하시는 분이 계실까 미리 알려드립니다.)
http://bindgen.org/performance.html
위의 문구는 다시 생각해봐야겠네요.
사용목적이 어디에 있느냐에 따라 얘기가 달라지지 않나 싶네요.
뭔가 판단하기엔 미천한 제 실력이 원망스럽네요 ㅠㅠㅠ
일단 제 플젝에는 아파치에서 제공하는 PropertyUtils 를 적용하고 있어야겠습니다ㅠㅠ
'Programming > JAVA' 카테고리의 다른 글
java : 문득 왜 로컬변수는 초기화를 안할까에 대한 생각. (0) | 2015.01.29 |
---|---|
java : label break 를 통한 반복문 제어 (0) | 2012.09.21 |
java : 정규식 표현을 해야할 경우에는 정규식 표현을 사용하는 것이 좋습니다. :) (0) | 2012.02.21 |
java : POJO란? (0) | 2011.12.19 |
java : 구성(composition)과 위임(delegation) (0) | 2011.11.10 |