inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

웹소켓/STOMP 채팅서비스(spring, vue, redis)

JWT토큰생성

싱글톤 객체 질문있습니다.

해결된 질문

125

열심인 참새

작성한 질문수 32

0

@Bean
public PasswordEncoder makePassword() {
    return PasswordEncoderFactories.createDelegatingPasswordEncoder();
}

이거를 싱글톤 객체로 만들어주셨는데요

그런데
String encodedPassword = passwordEncoder.encode(memberSaveReqDto.getPassword()); 이부분을 static 으로 두고 참조변수를 사용해서 사용하는 것과 어떤 차이가 있나요?

찾아보니 전역변수는 static 이니까 메모리에 미리 올라가고 싱글톤은 사용할떄 올라가는 장점이 있다고 하는데
이 예시는 어차피 클래스 초기화될 때 생성되니까 그런 장점이 없을 것 같은데...
궁금합니다.

spring-boot websocket stomp-websocket pubsub vue-3

답변 2

1

열심인 참새

조금 더 공부해보도록 하겠습니다..
일단 Spring 에서는 공통적으로 사용하는 유틸에 대해서는 싱글톤으로 처리해주어야 한다는 거군요.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 열심인 참새님.

싱글톤 객체와 static 사용에 대한 질문 주셨습니다. 이는 Spring 프레임워크 내의 빈 관리와 Java의 메모리 관리 차이를 이해하는 데 중요합니다. 기본적으로 두 방법은 단일 인스턴스를 제공하지만, 사용 맥락에서 큰 차이가 있습니다:

  1. 싱글톤 객체: Spring에서 @Bean 어노테이션을 통해 싱글톤 빈을 정의하면, Spring IoC 컨테이너가 관리하는 방식입니다. 이는 의존성 주입을 가능하게 하고, Spring의 나머지 기능(예: 트랜잭션 관리, AOP 등)과 연동 가능합니다. 빈은 컨테이너에 의해 인스턴스화되고, 주입될 때 유연성을 가지고 있습니다.

  2. static 방식: static 메서드나 변수는 클래스 로딩 시 메모리에 적재되며, 객체 인스턴스 생성 없이 접근 가능합니다. 그러나 이러한 방식은 객체 지향의 원칙을 제한하게 됩니다. 코드의 재사용성과 테스트 능력에 제약이 생기며, 특히 의존성 주입과 같은 기능은 사용할 수 없습니다.

이 예시에서 PasswordEncoderstatic으로 두는 것은 싱글톤 빈을 사용했을 때 얻는 이점들을 놓치는 결과를 초래할 수 있습니다. 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