2011-03-23 8 views
0

내 응용 프로그램의 모든 속성을 나타내는 POJO가 있습니다. 그것은 엄청난 양의 Strings와 boolean (클래스 변수와 getter/setter)을 포함합니다.POJO를 많은 양의 getter와 setter로 효율적으로 채우기

문제는 새로운 속성이 추가 될 때마다 getter, setter, getter를 사용하는 코드를로드하는 속성 파일을로드하는 코드를 추가해야한다는 것입니다.

나의 아이디어는 이것을 3 개의 해시 맵에서 가져 오는 getString(String stringToGet), getIntgetBoolean 방법으로 리팩터링하는 것이었다. 이런 방식으로 문제를 겪는 것은 더 이상 EL을 사용하여 속성을 얻지 못한다는 것입니다. ${Properties.telephoneNumber}

누구든지 다른 아이디어가 있습니까?

+2

. http://projectlombok.org/에서 런타임시 getter/settes를 생성하여 코드를 더 매끄럽게 유지할 수 있습니다. –

+1

JavaBeans에는 getter 및 setter가 필요합니다. POJO는 그렇지 않습니다. 나는 당신이 "EL"을위한 JavaBean을 필요로한다고 생각한다;) –

+0

IDE를 사용하여 getter/setters를 생성 할 수 있어야한다. 코드를 어수선하게 만들뿐 아니라 많은 노력을해서는 안된다. –

답변

3

JSF 2.0 이후로 당신은 EL의 매개 변수와 메소드를 호출 할 수 있습니다 : 당신은 아마 논리적으로 그룹화 특성을 가진 작은 POJO를을 만드는, 당신의 POJO를 리팩토링에 보일 것입니다

#{properties.getString('telephoneNumber')} 
+0

나는 당신의 대답을 좋아합니다. 프로젝트에 JSF를 추가하는 데 관련된 많은 작업이 있습니까? –

+1

그건 정말 당신의 프로젝트에 달렸고, 어떻게 그 프로젝트가 이미 끝났습니까. 작거나 새로운 프로젝트에 JSF를 추가하는 것은 전혀 노력하지 않습니다. 우선, [여기] (http://www.mkyong.com/jsf2/jsf-2-0-hello-world-example/)을보십시오. – Uwe

3

모든 변수를 가져 오거나 설정할 수있는 클래스가 있다면 변수를 public으로 설정하면됩니다. 일반적으로 이것을하지 않는 이유는 구현을 변경하거나 변수 이름이나 그와 비슷한 것을 변경하려는 것이 가능한 경우입니다. 만약 당신이 알지 못한다면 나는 앞으로 나아가 대중에게 접근을 바꿀 것입니다.

또한 Eclipse를 사용하고 있다면 (아마도 다른 IDE이지만 친숙하지는 않습니다) 자동으로 get/set 메서드를 만들 수 있으므로 번거롭지 않아야합니다.

제안한 해결책을 사용하지 않겠습니다. 자동 완료의 편의성을 제거 할 수 있습니다. 이는 여러 메소드/변수가있을 때 특히 필요합니다.

+1

나는 이것을 반대합니다. 그것은 당신의 코드를 매우 허약하게 만듭니다. 클래스가 package-private이고 논쟁의 여지가있는 경우에만 public 멤버 변수를 공개해야합니다. – nsfyn55

+0

플러스 이클립스/아이디어에서 getters/setters를 생성하는 데 약 2 초가 걸리는 것으로 지적한 많은 사람들 – nsfyn55

+0

@ nsfyn55 또한 제안했습니다. –

1

IDE를 사용하여 모든 세터와 게터를 생성하십시오.

+0

이것을 좀 더 건설적으로 만들기 위해 인기있는 IDE에 예제를 제공해 주시겠습니까? –

관련 문제