Spring 4

Controller, RestController 어떻게 다를까

@Controller, @RestController가 어떻게 다른지 알아보자.@Controller는 뷰를 반환할 때 사용된다. ModelAndViwe 객체나 Model 객체를 활용하여 데이터를 전달하고, 템플릿 엔진을 통해 HTML 뷰를 렌더링한다. 만약 JSON, XML과 같은 데이터를 반환하려면 @ResponseBody를 추가해야 한다.@RestController 은 @Controller + @ResponseBody으로 RESTful 웹 서비스에서 사용되는 컨트롤러로, Json 형태로 객체 데이터를 반환한다. 컨트롤러 어노테이션RestController annotation@RestController에는 @ResponseBody가 들어있는 것을 확인할 수 있다.ResponseBody는 메서드의 반환 값..

Spring 2025.02.02

Spring과 Spring Boot 동작이 어떻게 다른거야~

원티드 백엔드 강의를 들으면서, 내가 스프링과 스프링 부트의 동작 흐름에 대한 차이를 제대로 이해하지 못하고 있다는 걸 깨달았다.이전 회사에서는 Spring Framework를 사용했는데, 설정 단계와 프로젝트 초기 세팅이 꽤나 복잡해서 고생했던 기억이 있다. 이번 프로젝트에서는 Spring Boot를 사용하게 되면서 초기 설정이 훨씬 간편해졌다는 걸 느꼈지만, 두 기술의 내부 흐름을 제대로 알 못한 채 활용하고 있다는 생각이 들었다.그래서 이번 기회에 Spring과 Spring Boot의 동작 흐름과 차이점을 정리해 보려고 한다.Web Server, WAS인터넷이 처음 나왔을때, 웹 페이지는 주로 텍스트 기반의 단순 정적 콘텐츠(HTML 파일)로 구성되었다. 사용자가 요청할 때마다 콘텐츠를 빠르고 안정..

Spring 2025.01.20

DI(Dependency Injection)

객체 간의 의존성을 외부에서 주입하여,객체 간의 결합도를 낮추고, 코드의 재사용성과 유연성을 높이는 패턴 객체가 직접 의존성을 생성하거나 관리하는 대신, 외부에서 필요한 의존성을 주입받아서 사용하기 때문에, 사용할 객체의 구현을 몰라도 되고, 인터페이스나 추상 타입에 의존한다.   강합 결합한 클래스가 다른 클래스의 구현에 직접적으로 의존하는 상황으로, 두 클래스 간의 관계를 변경하거나 유지보수가 어렵다.public class Engine { public void start() { System.out.println("Engine start!"); }}public class ElectricEngine extends Engine { @Override public void s..

Spring 2025.01.07

JSON Web Token

프로젝트 중에 JWT를 사용하여서 잘 몰라서.. 공부하고자   HTTP는 웹에서 클라이언트와 서버 간의 통신을 가능하게 하는 규칙이다. 하지만 통신 후 연결을 유지하지 않고, 상태를 저장하는지 않기 때문에, 사용자 매번 인증 과정을 반복해야 하는 불편함이 있다.  상태를 유지하기 위해 쿠키와 세션 방식이 나왔다. 하지만 쿠키는 보안에 취약하고 세션은 접속자가 많아질 경우 서버에 부하가 증가하게 된다. 그리고 다중 서버 시 세션 공유 문제가 발생할 수 있다.  이러한 문제를 해결하기 위해 RESTful API와 같은 stateless 아키텍처가 요구하는 인증 방식으로 JWT(JSON Web Token)가 등장했다. JWT는 사용자 정보를 담고 있는 JSON 형식의 토큰으로, 서버가 상태를 저장할 필요 없이..

Spring 2025.01.07