2011-03-14 4 views
2

저는 레거시 앱을 Spring으로 변환하는 중입니다. 전환 과정에서 우리는 서비스 클래스를 "필요할 때마다 새로운 인스턴스를 생성"스타일에서 Springleton 스타일로 변환하므로 어떤 상태도 가지지 않도록하는 방법이 필요합니다.Java 패키지에서 인스턴스 변수의 초기화를 모두 찾는 방법은 무엇입니까?

* nix 명령 줄에 익숙하며 IntelliJ에 액세스 할 수 있습니다 (이 방법을 사용하면 구조 검색 및 바꾸기에 적합하다고 생각합니다). 이클립스 설치를 추적하면 도움이된다. 나는 가능한 모든 문제를 발견했다고 절대적으로 확신하고 싶습니다.

업데이트 : 혼란스럽게 생각합니다. 이전 생성자가 호출 된 곳을 찾는 데는 문제가 없습니다. 내가 찾고있는 건 "모든 종류의 내부 상태에 대해 100 개 이상의 모든 서비스 클래스를 검색하는"총알 방지 "입니다. 내가 생각할 수있는 가장 확실한 것 (그리고 지금까지 발견 한 유일한 것)은 클래스에서 메모 작성을 사용하는 경우이므로 인스턴스 변수가 Spring을 통하지 않고 내부적으로 초기화됩니다. 즉, 동일한 Springleton이 서로 다른 요청에 사용되면 데이터 사이에 데이터가 누설 될 수 있습니다. 감사합니다. .

+1

+1 "Springleton"- 이제 내 vocab에 들어갑니다. –

+2

생성자를 '비공개로 설정하고 컴파일 오류가 여러분의 IDE에서 팝업되는지 확인하십시오. –

+0

+1 아니면 인스턴스를 동적으로 생성하는 시나리오를 잡아낼 수있는 예외를 던질 수 있습니다 (예 : Class.forName.neeInstance()) –

답변

0

Eclipse의 리팩토링 도구를 사용하는 것이 좋습니다. 따라서 클래스와 연결된 모든 인스턴스를 변경하는 것이 가장 좋습니다. 나는 한 단계 더 나아가서 당신이 바꿀 클래스의 이름을 바꿀 것입니다, 최악의 경우에, 전체 컴파일이 실패하고 당신은 그 문제들 중 어떤 것을 쉽게 고칠 수 있습니다.

1

이클립스에서는 변수/유형을 마우스 오른쪽 버튼으로 클릭하면 References (또는 Declarations) -> (Workspace/Project/Hierarchy) 옵션을 통해 모든 인스턴스를 찾을 수 있습니다.

관련 문제