spring 7

[보안] JWT와 세션 어떤걸 사용해야할까?

안녕하세요 오늘은 JWT와 세션 어떤 걸 사용해야 하는지 알아보도록 하겠습니다. JWT나 세션에 대한 정보는 구글에 검색하면 많기 때문에 따로 하지는 않겠습니다.둘 다 쉽게 얘기하면 클라이언트와 서버가 인증이나 정보를 교환하기 위한 표라고 생각하면 되겠습니다. 백엔드 애플리케이션을 개발하다보면 회원가입과 로그인에서 JWT와 세션 중 무엇을 사용할지 고민이 되실 겁니다.보통 처음 백엔드를 공부해서 Spring을 사용하면, Spring Security + JWT 조합을 많이 사용하실 텐데, 그러면 이 조합이 무조건 좋은 게 아닌가라는 생각이 드실 수 있습니다. 먼저, 각자가 어떤 이유에서 사용되는지 얘기해 보겠습니다.JWT는 서버 측에 상태를 저장하지 않는 Stateless 하다는 장점이 있습니다.이러한 점..

카테고리 없음 2026.04.14

[Spring] Spring은 왜 사용하는걸까? + 공부할 때 꿀팁

안녕하세요 오랜만에 글을 올립니다.그동안 이런저런 공부를 좀 하다가 스프링을 사용하는 근본적인 이유를 좀 정리했습니다. 단순히 Spring을 많이 사용하기 때문에라는 말이 아닌 Spring이라는 것이 어떤 이유로 많이 사용되는지에 대한 것을 좀 정리해보려고 합니다. 딱히 공부 방법이 궁금하지 않으시면 이 부분은 넘어가셔도 됩니다.더보기더보기Spring을 공부하시려고 책을 찾다보면 토비의 스프링이라는 책을 들어보셨을 겁니다. 저도 예전에 어떤 개발자분이 Spring 개발자라면 무조건 한 번은 완독 해야 한다 하시는 것을 봐서 실제로 저도 토비의 스프링으로 공부를 했습니다.이 책의 장점은 여러가지 궁금해할 만한 점들을 전부 세세하게 설명해 주는 것입니다. 구글링도 좋은 참고 자료이지만 대부분 단편적인 내용..

[Spring] - DI (Dependency Injection) - 2

DI에 관한 글을 적어놓고 다음 포스트에서 더 이야기한다고 했지만, 이것저것 하느라 바빠서 시간이 별로 없었습니다.그래서 이제야 2장을 쓰게 되는데 사실 1장을 작성하고 2장으로 어떤 걸 작성하려 했는지 잘 기억이 나지 않아서 제가 적고 싶은 대로 적어보려고 합니다. 일단 1장을 먼저 간단하게 요약하겠습니다.자바는 객체 지향 언어로서 5가지 주요 원칙이 있는데, 이 원칙들의 궁극적인 목표가 가독성이 좋고, 유지보수성이나 확장성이 좋은 코드를 작성하는 것입니다.그중 단일 책임 원칙이나 인터페이스 분리 원칙을 보면, 각 객체는 하나의 책임만을 가져야 하고, 자신이 사용하지 않는 메서드는 들고 있을 필요가 없다는 것을 뜻합니다.그래서 이것을 쉽게 말하자면 결국 객체에 쓰지도 않는 기능을 넣지 말고, 한 번에 ..

[Spring] DTO와 Entity 변환에 대하여

안녕하세요 오랜만에 포스팅합니다. 사실 다른 내용도 올렸어야 했지만, 이것저것 하느라 바빴어서 그동안 시간이 없었는데 오랜만에 제가 올리고 싶은 내용으로 왔습니다.요즘 백엔드로 Spring + JPA를 많이 시작하고 공부하는 사람들이 많아졌는데요, 여러 강의를 듣다 보면 DTO와 Entity에 대한 이야기를 많이 들으실 겁니다. 해당 내용에 대한 이론을 설명하는 글은 아니라서 간단하게만 이야기하면 Entity 같은 경우는 테이블과 매칭되는 클래스를 정의한 것으로 주로 Service단에서 DB와 통신하는 과정에서 사용되고, 여러 이유로 Entity를 그대로 API를 호출하는 클라이언트에 전달할 수 없기 때문에 DTO라는 형태로 내보내게 됩니다. 그래서 공부하다보면 의문이 생기게 됩니다. "Entity와 D..

[Spring] 웹소켓 - Web Socket with STOMP + Spring Security + JWT

오늘은 웹소켓을 구현해보도록 하겠습니다.STOMP일단 웹소켓 환경으로 STOMP를 활용할것입니다.STOMP는 Simple/Streaming Text Orientated Messaging Protocol의 줄임말로 메시지 프로토콜입니다.다르게 말하면, 어떤 형식으로 메시지를 주고받을지 정의하는 하나의 규약이라고 할 수 있습니다. STOMP를 사용하는 이유로는 웹소켓은 양방향 통신 연결 즉, 파이프만 구성하고 이 파이프를 통해서 데이터 혹은 메시지를 누구에게, 어떻게 전달해야 할지는 개발자가 직접 메시지 형식을 일일이 설계하고 파싱해야합니다.하지만 STOMP를 사용한다면 이러한 메시지 형식을 개발자가 직접 설계하는 것이 아닌 표준화합니다. 그래서 원하는 메시지를 명확한 형식에 맞춰서 간단하게 설정할 수 있다..

[Spring] - DI (Dependency Injection) - 1

이번 포스트에서는 Spring의 DI에 대해서 알아보려고 합니다.DI란 의존성 주입이라는 뜻으로, 객체 간의 의존 관계를 외부에서 설정해 주는 것 일단 스프링을 공부하기 시작하면 정말 많이 보이는 단어인데, 객체 간의 의존 관계를 외부에서 설정해 준다는 것이 처음에 보면 좀 이해하기 어렵습니다. 스프링에 대해서 공부하면서 DI를 통해 결합도를 낮추고 객체 지향 원칙을 지향하여 유지보수성을 높인다는 이야기를 들어봤을 텐데요근데 스프링을 처음 접하는 사람 입장에서는 이런 이야기들이 뜬구름 잡는 이야기라고 느낄 텐데, 이 포스팅에서는 내가 궁금했던 부분들을 세세하게 이야기하고자 합니다. 의존 관계스프링은 자바를 기본적으로 사용하는데 자바는 객체 지향 언어입니다. 객체 지향에서 정말 중요한 개념 중 하나가 단일..

[Spring] Spring Security와 JWT를 활용한 인증, 인가 구현

최근에 아는 지인과 좀 더 깊고 제대로 이해하기 위해서 Spring 공부를 시작했는데, 이론 공부만 하기 뭐해서 프로젝트도 같이 시작했습니다.그래서 기록도 좀 할 겸 블로그에 개발 기록을 올리려고 하는데 무언가 공모전에 내거나 서비스를 만들기 위해서 하는 것이 아닌 공부를 위해서 하는 프로젝트이기 때문에 기능 하나하나마다 여러 가지를 시도와 트러블 슈팅들을 기록해보고자 합니다. 일단 첫 단추로 Spring Security입니다.아마 Spring 개발자라면 회원가입이나 로그인 기능을 구현하고자 할 때 한 번쯤은 들어봤을 법한 기술인데, 사실상 Spring을 사용해서 인증, 인가를 구현할 때 대다수가 사용하는 프레임워크입니다.그만큼 호환도 잘되어있고, 사실상 스프링 기반 애플리케이션의 보안을 위한 표준이라고..