2012-03-13 5 views
1

@Singleton 주석을 사용하여 Java EE 6에서 Singleton 클래스를 작성하고 있습니다. 나는 생성자를 선언하지 않았다.@Singleton 클래스는 생성자를 비공개로 설정해야합니까?

개인 생성자를 명시 적으로 만들어야합니까?

내가 묻는 이유는 내가 PMD를 사용하고 있으며, UseSingleton 이라는 규칙이 사용되었다는 것입니다. PMD가 @Singleton 주석을 이해하지 못한다고 생각합니까?

답변

4

PMD는 다른 사람이 당신의 싱글 톤 객체를 인스턴스화 할 수 있도록 생성자 private을 추천한다. Java EE 6 주석을 인식하지 못합니다.

이 경고는 무시해도됩니다.

+0

개인 생성자를 private로 만들었을 때 런타임에 클래스를로드하는 동안 문제가 발생 했으므로 생성자를 제거하기 위해 PMD에 경고를 표시 할 방법이 있는지, @SuppressWarnings ("PMD")도 넣습니다. @SuppressWarnings ("PMD.UseSingletone")을 사용하려고 시도했지만 취하지 않았으므로 일부 경고 이음새를 억제 할 수 없습니다. –

+0

J2EE의 경우 리플렉션을 통해 호출 할 수 있도록 생성자를 public으로 유지해야합니다. PMD로 경고를 어떻게 억제하는지 잘 모르겠습니다. ( –

0

아니요. 빈 클래스에 @Singleton을 추가하십시오.

@Singleton 
public class TesterBean { 
    private int testCount = 0; 
    public int getCount() { 
     return testCount++; 
    } 
} 
관련 문제