작성
·
62
0
안녕하세요 지식공유자님.
강의에서 JwtProvider 에 @Component 어노테이션을 선언하셔서 스프링이 관리하도록 의도하신 것 같습니다. 그런데, 함수에 static 을 모두 붙이시고, 사용하는 쪽에서는 bean 으로 등록 하지 않고 static util 처럼 사용하시는 것을 확인했습니다.
질문은 두가지 입니다.
@Component 를 선언하셨음에도 static 메서드를 authService 에서 사용하신 이유가 있으신지.
빈으로 만들고서도 static 함수로 사용하는 것에 이점이 있는 것인지.
답변 부탁드리겠습니다. 감사합니다.
답변 2
0
Spring은 되게 정형화되어있는 프레임 워크라고 생각합니다. 하지만 저는 개발 스타일이 좀 더 자유로움을 추구하고 직접 구현하는것을 좋아해요 그래서 Spring을 작업 할 때 남들이 하는 형태로 작성을 많이 하지는 않습니다 ㅎㅎ
1번 항목에 대해서는 단순한 유틸리티로써 제공을 하기 위해서 사용을 하였습니다. 어차피 객체 상태에 의존적이지도 않고 순수하게 값만 받아서 처리를 하고 있기 떄문에 좀 더 직관적이라고 생각을 하였습니다. 또 굳이 빈 주입을 받지 않고 독립적으로 동작하기 떄문에 의존성도 제거하며 외부 자원을 참고하는 부분도 없다고 생각을 했던거 같습니다. 그리고 가장 중요한것은 제가 이런식의 스타일을 좋아합니다 ㅎㅎ
2번 항목에 대해서는 음 크게 생각나는 부분은 없는거 같아요. 일단 의존성이 많이 떨어진다는 장점이 있겠고, 필요에 따라서 DI 가능성도 가능한 형태가 아닌가 싶습니다.
그런데 아무래도 이러한 형태는 테스트 하기가 어렵다는 단점이 있습니다. 아무래도 static이 상태를 가지고 있지 않기 떄문에 특정 상태를 테스트하는 케이스에 대해서는 쉽지 않을 수 있으니 상황에 맞춰서 사용하시면 좋을 꺼 같습니다.
어느정도 도움이 되셨을까요?? 감사합니다 :)
0
안녕하세요, 인프런 AI 인턴입니다. Joshua Kim님.
JwtProvider를 @Component로 선언하여 Spring이 관리하도록 설정하신 점과 static 메서드를 사용하신 것에 대해 질문 주셨습니다. 이와 관련하여 유사한 주제를 다룬 답변을 찾아보았습니다.
@Component와 static 메서드 사용:
Spring에서 @Component를 선언하면 해당 클래스의 인스턴스를 Spring 컨텍스트의 빈으로 등록하게 됩니다. 이와 함께 static 메서드를 사용하면 인스턴스 생성 없이 메서드를 호출할 수 있어 편리합니다. 다만, 이러한 조합은 일반적으로 권장되지 않습니다. 왜냐하면 static 메서드는 인스턴스 독립적이기 때문에 DI(Dependency Injection)와 같은 객체 지향적 접근의 장점을 활용할 수 없기 때문입니다.
빈으로 만들고 static 함수로 사용하는 이유:
해당 질문과 관련된 답변들이 많은 도움이 될 것입니다. 스프링에서의 static 사용은 가능하나, 목적과 용도를 명확히 하여 상황에 맞게 사용하는 것이 좋습니다. 설명해 드린 바와 같이 의도적인 사용에는 장단점이 있음을 유념하시기 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드립니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.