싱글톤 객체 질문있습니다.
@Bean
public PasswordEncoder makePassword() {
return PasswordEncoderFactories.createDelegatingPasswordEncoder();
}이거를 싱글톤 객체로 만들어주셨는데요
그런데
String encodedPassword = passwordEncoder.encode(memberSaveReqDto.getPassword()); 이부분을 static 으로 두고 참조변수를 사용해서 사용하는 것과 어떤 차이가 있나요?
찾아보니 전역변수는 static 이니까 메모리에 미리 올라가고 싱글톤은 사용할떄 올라가는 장점이 있다고 하는데
이 예시는 어차피 클래스 초기화될 때 생성되니까 그런 장점이 없을 것 같은데...
궁금합니다.
답변 2
0
안녕하세요, 인프런 AI 인턴입니다. 열심인 참새님.
싱글톤 객체와 static 사용에 대한 질문 주셨습니다. 이는 Spring 프레임워크 내의 빈 관리와 Java의 메모리 관리 차이를 이해하는 데 중요합니다. 기본적으로 두 방법은 단일 인스턴스를 제공하지만, 사용 맥락에서 큰 차이가 있습니다:
싱글톤 객체: Spring에서
@Bean어노테이션을 통해 싱글톤 빈을 정의하면, Spring IoC 컨테이너가 관리하는 방식입니다. 이는 의존성 주입을 가능하게 하고, Spring의 나머지 기능(예: 트랜잭션 관리, AOP 등)과 연동 가능합니다. 빈은 컨테이너에 의해 인스턴스화되고, 주입될 때 유연성을 가지고 있습니다.static방식:static메서드나 변수는 클래스 로딩 시 메모리에 적재되며, 객체 인스턴스 생성 없이 접근 가능합니다. 그러나 이러한 방식은 객체 지향의 원칙을 제한하게 됩니다. 코드의 재사용성과 테스트 능력에 제약이 생기며, 특히 의존성 주입과 같은 기능은 사용할 수 없습니다.
이 예시에서 PasswordEncoder를 static으로 두는 것은 싱글톤 빈을 사용했을 때 얻는 이점들을 놓치는 결과를 초래할 수 있습니다. Spring이 제공하는 다양한 부가 기능들을 활용하려면 싱글톤 빈으로 관리하는 것이 더 바람직한 방식입니다.
관련하여 더 많은 예제가 있는 게시물을 참고하시면 전체적인 맥락을 이해하는 데 도움이 될 것입니다:
- 싱글톤 패턴과 Spring의 싱글톤 빈 관리 - 싱글톤 패턴과 Spring에서의 빈 관리 방식의 차이점
저는 질문자님의 이해를 돕고자 이전에 지식공유자님의 답변을 참고하여 유사한 질문 링크를 추천해드리고 있습니다. 현재 베타 기능으로 인해 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
ERD 질문
0
54
2
StompHandler 관한 질문
0
80
2
리프레시 토큰은 알아서 구현하면 되는건가요??
0
79
2
cors, csrf 직접 구현
0
65
1
JWT 필터구현
0
98
2
강의 잘듣고 있습니다. 혹시 다음 강의 계획은 없으신가요?
0
57
1
STOMP 동작 과정 질문
0
48
1
chain.doFilter()
0
45
1
자바 21로 소스 작성해도 되나요?
0
60
2
메시지 브로커 선택에 관한 질문
0
65
2
WebSocket과 Spring Security 질문
0
81
2
추가 커스텀 구현 질문 있습니다.
0
60
2
connect와 동시에 구독하는데 구독 검증이 꼭 필요한가요?
0
97
2
저도 동일한 질문인데
0
78
3
token이 필요한 엔드포인트에 의도적으로 토큰 누락시 대처
0
67
2
수업자료가 왜 다 나눠져있나요?
0
78
2
메시지 전송 시 검증
0
61
2
JWT 생성 시 subject 설정에 대한 질문
0
158
3
StompHandler 질문 있습니다.
0
82
2
앱 서비스일 경우
0
84
2
웹소켓 서버 재배포시 고려해야 할 상황 질문
0
107
2
배포 오류 질문
0
124
2
/connect 경로에 대한 토큰 검증의 필요성
0
77
1
JwtTokenProvider 작성중 오류 발생으로 문의드립니다.
0
97
2





