public class Main {
public static void main(String[] args) {
Obj.Method1();
Obj.Method2();
Obj.Method2();
Obj.Method1();
}
}
public class Member {
private String name;
private String text;
public Member(String name, String text) {
this.name = name;
this.text = text;
}
}
public class Obj {
static class Inner{
private static final Member member = new Member("민정", "굿");
}
private static Member newMember(){
return Inner.member;
}
public static void Method1(){
System.out.println(newMember());
}
public static void Method2(){
System.out.println(newMember());
}
}
만약 Obj 클래스가 다음과 같으면 싱글톤이 아니라, 다 다른 멤버 객체가 리턴된다.
public class Obj {
public static Member newMember(){
return new Member("민정", "굿");
}
public static void Method1(){
System.out.println(newMember());
}
public static void Method2(){
System.out.println(newMember());
}
}
즉, 메서드가 static이라고 리턴하는 객체가지 똑같을 거라고 생각하면 오산이다.
'개발 > Spring' 카테고리의 다른 글
N+1 문제란? feat. 해결방법 - 개념적 이야기 (0) | 2023.08.06 |
---|---|
QueryDsl을 이용한 No offset 구현하기 (0) | 2023.08.06 |
spring-data-jpa Repository에서 Entity로 반환받는 이유 (0) | 2023.08.02 |
Entity와 DTO (0) | 2023.08.02 |
@Transactional 동작원리와 public method calls private method에서의 트랜잭션 적용 여부 (0) | 2023.08.02 |
댓글