EgovPropertyServiceImpl 클래스에 대해 질문이 있습니다..
- 작성자 :
- 제**담
- 작성일 :
- 2020-08-31 17:23:01
- 조회수 :
- 2,978
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
EgovPropertyServiceImpl 클래스에 대해 질문이 있습니다..
안녕하세요..어제 글을 등록하고 잤는데..일어나서 확인해보니 글이 등록되어 있질 않아서 다시 글을 씁니다..
전자정부프레임워크 템플릿을 보면 EgovPropertyServiceImpl 클래스를 이용해서 property 정보를 설정하는 부분이 있습니다..
EgovPropertyServiceImpl 클래스를 보니 apache common collection에서 제공하는 ExtendedProperties 클래스 객체에 프로퍼티들을 보관하는것으로 보이는데요..
저장되어 있는 프로퍼티들의 key 값들을 읽어오질 못하고 있습니다..
EgovPropertyServiceImpl 클래스가 구현하는 EgovPropertyService 인터페이스에 public Iterator<?> getKeys() 메소드를 통해서 Iterator 구현 객체에 key 값들을 넘겨주는것으로 이해했는데..
막상 위의 xml 같이 저장해도 key 로 사용된 pageUnit, pageSize 등이 저장되어 있지 않습니다..아무것도 없어요..
그래서 이것을 조금 파악해보니 이런 내용이었습니다..제가 틀렸을수도 있지만..
ExtendedProperties 클래스는 내부에 key 값들을 저장하는 다음의 멤버변수가 있습니다..
protected ArrayList keysAsListed = new ArrayList();
그리고 EgovPropertyServiceImpl 클래스가 public Iterator<?> getKeys() 메소드를 구현한 내용을 따라가보면 이 keyAsListed를 return 하고 있습니다..
근데 문제는 EgovPropertyServiceImpl 클래스의 afterProperties 메소드를 보면 ExtendedProperties 가 제공하는 메소드가 아닌 ExtendedProperties 클래스가 상속받은 Hashtable 클래스가 제공하는 put 메소드를 통해서 프로퍼티 값들을 등록하고 있습니다..
이로인해 keyAsListed 변수엔 key가 들어가지 않고 있는거죠..이러다보니 getKeys 메소드를 이용해도 아무 값이 없게 됩니다..
put 메소드가 아니라 ExtendedProperties 클래스의 addProperty 메소드를 사용해야 keyAsLsited 변수에 key 값이 들어가면서 프로퍼티 값들이 저장됩니다..
첨부파일로 보내드리는 것은 제가 작성한 테스트 클래스 파일입니다.. lombok과 profile을 사용하고 있기 때문에 바로 복사하셔서 사용할수는 없겠지만 가지고 계신 테스트 환경에 맞춰서 수정하신 후에 테스트 클래스를 실행해보시면 검증 가능하리라 생각합니다..
한번 검토 부탁드리겠습니다..
고맙습니다..
PS) 글이 안올라온 이유를 알겠네요..설정 내용을 설명할려고 bean 태그를 넣었는데 그게 들어가니까 안되네요..
spring xml 태그를 본문에 넣으면 글이 등록이 안되는것 같으니 이것도 확인부탁드립니다..
안녕하세요..어제 글을 등록하고 잤는데..일어나서 확인해보니 글이 등록되어 있질 않아서 다시 글을 씁니다..
전자정부프레임워크 템플릿을 보면 EgovPropertyServiceImpl 클래스를 이용해서 property 정보를 설정하는 부분이 있습니다..
EgovPropertyServiceImpl 클래스를 보니 apache common collection에서 제공하는 ExtendedProperties 클래스 객체에 프로퍼티들을 보관하는것으로 보이는데요..
저장되어 있는 프로퍼티들의 key 값들을 읽어오질 못하고 있습니다..
EgovPropertyServiceImpl 클래스가 구현하는 EgovPropertyService 인터페이스에 public Iterator<?> getKeys() 메소드를 통해서 Iterator 구현 객체에 key 값들을 넘겨주는것으로 이해했는데..
막상 위의 xml 같이 저장해도 key 로 사용된 pageUnit, pageSize 등이 저장되어 있지 않습니다..아무것도 없어요..
그래서 이것을 조금 파악해보니 이런 내용이었습니다..제가 틀렸을수도 있지만..
ExtendedProperties 클래스는 내부에 key 값들을 저장하는 다음의 멤버변수가 있습니다..
protected ArrayList keysAsListed = new ArrayList();
그리고 EgovPropertyServiceImpl 클래스가 public Iterator<?> getKeys() 메소드를 구현한 내용을 따라가보면 이 keyAsListed를 return 하고 있습니다..
근데 문제는 EgovPropertyServiceImpl 클래스의 afterProperties 메소드를 보면 ExtendedProperties 가 제공하는 메소드가 아닌 ExtendedProperties 클래스가 상속받은 Hashtable 클래스가 제공하는 put 메소드를 통해서 프로퍼티 값들을 등록하고 있습니다..
이로인해 keyAsListed 변수엔 key가 들어가지 않고 있는거죠..이러다보니 getKeys 메소드를 이용해도 아무 값이 없게 됩니다..
put 메소드가 아니라 ExtendedProperties 클래스의 addProperty 메소드를 사용해야 keyAsLsited 변수에 key 값이 들어가면서 프로퍼티 값들이 저장됩니다..
첨부파일로 보내드리는 것은 제가 작성한 테스트 클래스 파일입니다.. lombok과 profile을 사용하고 있기 때문에 바로 복사하셔서 사용할수는 없겠지만 가지고 계신 테스트 환경에 맞춰서 수정하신 후에 테스트 클래스를 실행해보시면 검증 가능하리라 생각합니다..
한번 검토 부탁드리겠습니다..
고맙습니다..
PS) 글이 안올라온 이유를 알겠네요..설정 내용을 설명할려고 bean 태그를 넣었는데 그게 들어가니까 안되네요..
spring xml 태그를 본문에 넣으면 글이 등록이 안되는것 같으니 이것도 확인부탁드립니다..
A
안녕하세요.
표준프레임워크 센터입니다.
1. 먼저 표준프레임워크에 관심을 가져주셔 감사드립니다.
언급하신 바와 같이 Property 처리에 문제가 있음을 확인했습니다.
향후 해당 부분을 추가 검토를 거쳐 수정된 버전을 제공하도록 하겠습니다.
현재 프로젝트에서 사용하신다고 하면 해당 클래스를 재정의하여 사용하시기 바랍니다.
2. 표준프레임워크 홈페이지 보안상 태그 등이 등록되지 않을 수 있습니다.
이런 부분은 첨부파일로 등록해주시기 바랍니다.
감사합니다.
표준프레임워크 센터입니다.
1. 먼저 표준프레임워크에 관심을 가져주셔 감사드립니다.
언급하신 바와 같이 Property 처리에 문제가 있음을 확인했습니다.
향후 해당 부분을 추가 검토를 거쳐 수정된 버전을 제공하도록 하겠습니다.
현재 프로젝트에서 사용하신다고 하면 해당 클래스를 재정의하여 사용하시기 바랍니다.
2. 표준프레임워크 홈페이지 보안상 태그 등이 등록되지 않을 수 있습니다.
이런 부분은 첨부파일로 등록해주시기 바랍니다.
감사합니다.