Spring 6

[Spring] Servlet과 DispatacherServlet

ServletServlet은 Java를 이용해서 HTTP 요청을 처리하고응답을 생성하는 서버 측 프로그램 입니다.javax.servlet.http.HttpServlet 클래스를 상속받아 구현하게 되고Tomcat과 같은 웹 서버 위에서 작동합니다.Spring에서도 이 Servlet 개념을 기반으로 하고 있습니다.그중 DisPatcherServlet이 Spring MVC의 핵심 Servlet이라고 할수 있습니다. 즉, 서블릿은 웹 애플리케이션에서 클라이언트의 요청을 받아서처리한 후에 응답을 생성하는 입구와 같은 역할을 합니다. DispatcherServletDispatcherServlet은 Spring MVC에서 정말 핵심적인 존재입니다.스프링 프레임워크의 웹 MVC 아키텍처에서 요청을 중앙에서 처리하고알맞..

Spring 2025.08.01

[Spring] Spring Filter란?

Spring Filter우선 Spring Filter는 javax.servlet.Filter 인터페이스를 구현한 클래스 입니다.HTTP 요청이 DispatcherServlet에 도달하기 전이나응답이 사용자에게 반환되기 전에 동작하는 클래스 입니다.쉽게 말해웹 애플리케이션에서 모든 요청이나 응답이 지나가는 '중간 관문' 말 그대로중간에서 무언가를 걸려주는 '필터' 의 역할을 합니다.이 필터는 클라이언트가 보낸 요청이 본격적으로 처리되기 전이나응답이 클라이언트에게 가기 전에 먼저 검사하거나 조작할 수 있는 것입니다.Spring Filter는 위 그림과 같은 흐름으로 작동합니다. 예를 들어서 사용자가 /board 주소로 요청을 보냈다면이 요청이 메서드를 호출하는 컨트롤러로 가게 되는데,컨트롤러에 가기 전에 필..

Spring 2025.08.01

[Spring] PSA란?

PSA란?우선 PSA는 Portable Service Abstrction의 약자 입니다.Spring의 핵심 철학 중 하나이고특정 기술에 종속되지 않도록 추상화 계층을 제공한다는 정의를 가지고 있습니다. 이를 좀더 쉽게 설명하자면 어떤 기술을 어떤 개발자가 쓰던 똑같은 방식으로 쓸 수 있게 추상화 하는 것이라고 설명할 수 있겠습니다.예를 들어서 우리가 프로그램을 만들 때, 데이터베이스, 캐시 같은외부 기술을 사용하게 되는데 이런 기술은 모두 제각각의 방식으로 동작하게 됩니다.이럴 때 개발자가 모든 기술의 세부적인 사용법을 모두 알아야 한다면개발자가 미쳐버릴 수 있습니다. 만약 개발을 하다가 "우리 DB 바꿔볼까?"라는의견이 나온다면 프로그램을 통째로 뜯어 고쳐야 할 수도 있습니다. Spring에서는 이러..

Spring 2025.07.22

[Spring] IoC란?

IoCIoC란국제 올림픽 위원회가 아니라 Inversion of Control의 약자로 "제어 반전"이라는 뜻을 가집니다. 이게 도대체 무슨 소리일까요?이 단어 앞에 몇글자만 추가된다면 어느정도 알 수 있으실거라고 생각합니다. "IoC란 개발자와 프레임워크간 제어 반전" 즉 개발자가 제어해야 할 요소들을Spring Framework에서 대신 제어해준다는 뜻입니다.원래는 개발자가 직접 객체를 만들고, 필요한 의존 객체도 직접 넣어야 합니다.IoC는 이러한 주도권을 개발자가 아니라 Spring과 같은 프레임워크가 가져가게 된다는 개념입니다. 즉, 원래는 어떤 객체를 생성할지, 어떤 의존성을 주입할지에 대한 것을 개발자가 직접 정했지만,객체 생성과 초기화, 소멸, 의존성 관리 등 전반적인 객체의 생명주기 관..

Spring 2025.07.17

[Spring] DI란?

DIDI란 Dependency Injection의 약자로, 의존성(Dependency)을 외부에서 주입(Injection) 시켜주는 소프트웨어 설계 원칙 입니다.Spring boot는 이 DI 원칙을 핵심 기반으로 삼아서 객체 생성과 관리, 주입 등을 자동화 하는 프레임워크 입니다.즉 DI를 개발자가 직접 구현하지 않더라도 Spring이 대신 처리해주는 구조 입니다.DI는 Spring boot 안에서 결합도를 낮추고 코드의 재사용성을 높여주는 역할을 하게 됩니다.위 사진은 start.spring.io에서 Spring boot 프로젝트를 생성할 때 보게되는 화면입니다.오른쪽에서 프로젝트에 필요한 라이브러리를 선택할 수 있습니다.선택한 라이브러리들은 대부분 스프링 컨테이너에 자동 등록되며, DI 방식으로 연..

Spring 2025.07.16

[Spring] 어노테이션과 import는 무엇일까?

annotation아래에는 제가 이번 전공동아리 과제를 하며 쓴 BoardController 코드 입니다. 이 코드로 예시를 들어 설명 해 보겠습니다.우선 어노테이션은 사전적 의미로는 "주석"을 뜻합니다. 그러나 우리가 평소 C,Java를 공부 할 때 사용하는 //, /**/와는 조금다릅니다. Spring,Java 등에서 쓰이는 어노테이션은 일반적인 주석과 다르게 코드를 작성 할 수 있습니다. 즉, 프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨 것이 어노테이션 입니다. 어노테이션은 주석이기 때문에 다이나믹하게 실행되는 코드는 들어가지 않습니다. 런타임 중에 알아내야 하는 값처럼 동적으로바뀌는 값은 어노테이션에 쓸 수 없습니다. 컴파일러 수준에서 해석이 되거나, 완전히..

Spring 2025.06.09