Java
-
Spring MVC - Understanding StructureJava/Spring 2025. 3. 17. 17:00
Spring MVC 패턴의 전체 구조를 이해합니다. 직접 만든 MVC 프레임워크와 스프링 MVC를 비교해 보겠습니다. 직접 만든 MVC 프레임워크 → 스프링 MVC 비교FrontController → DispatcherServlethandlerMappingMap → HandlerMappingMyHandlerAdapter → HandlerAdapterModelView → ModelAndViewviewResolver → ViewResolverMyView → View DispatcherServlet 구조 살펴보기스프링 MVC는 프론트 컨트롤러 패턴으로 구현되어 있으며, 그 핵심이 바로 디스패처 서블릿(DispatcherServlet)입니다.DispatcherServlet은 부모 클래스로부터 HttpSe..
-
Creating an MVC frameworkJava/Spring 2025. 2. 13. 23:22
MVC프레임워크를 만들어보며 프론트 컨트롤러 패턴을 학습합니다. Front Controller 패턴의 특징단일 프론트 컨트롤러: 하나의 프론트 컨트롤러 서블릿으로 클라이언트의 모든 요청을 받습니다.컨트롤러 매핑: 프론트 컨트롤러가 요청에 맞는 개별 컨트롤러를 찾아 호출합니다.공통 처리 용이: 공통 기능(인증, 로깅 등)을 프론트 컨트롤러에서 한 곳에서 처리할 수 있습니다.서블릿 의존성 최소화: 프론트 컨트롤러를 제외한 다른 컨트롤러는 서블릿을 직접 사용하지 않아도 됩니다. 스프링 웹 MVC와 프론트 컨트롤러스프링 MVC의 핵심 구조: 스프링 웹 MVC는 프론트 컨트롤러 패턴이 핵심입니다.DispatcherServlet: 스프링 웹 MVC의 `DispatcherServlet`역시 프론트 컨트롤러 패턴으..
-
Servlet / JSP / MVCJava/Spring 2025. 2. 12. 15:29
서블릿과 JSP, MVC 패턴에 대해 정리하였습니다. 회원 관리 애플리케이션을 Servlet, JSP, MVC 패턴 각각으로 회원 관리 애플리케이션을 만들어 봅니다. 회원 관리 애플리케이션은 회원 정보(이름 username 과 나이 age)를 저장하고 회원 목록을 조회할 수 있습니다. [ 공통 도메인 코드 ]회원 도메인 모델(Member) :@Getter@Setterpublic class Member { private Long id; private String username; private int age; public Member() { } public Member(String username, int age) { this.username = usernam..
-
Understanding Web ApplicationsJava/Spring 2025. 1. 14. 16:51
웹 애플리케이션에 대한 기본 구성요소와 개념 등에 대해 정리하였습니다. [ HTTP ]웹은 주로 HTTP 프로토콜을 기반으로 통신합니다. 웹 브라우저 클라이언트가 URI를 통해 서버에 페이지를 요청하면, 서버는 해당 페이지를 생성하여 클라이언트에게 제공합니다. 이 과정에서 클라이언트와 서버 간의 모든 데이터 전송은 HTTP 프로토콜을 통해 이루어집니다. HTTP는 HTML, 텍스트, 이미지, 음성, 영상 파일, JSON, XML(API) 등 거의 모든 형태의 데이터를 전송할 수 있으며, 서버 간의 데이터 전송에도 주로 사용됩니다. 이러한 이유로 현재는 HTTP의 시대라고 말할 수 있습니다. [ 웹 서버(Web Server) ]웹 서버는 HTTP 프로토콜을 기반으로 동작하며, 정적 리소스인 HTML, ..
-
Bean ScopeJava/Spring 2025. 1. 12. 23:39
스프링의 빈 스코프에 대해 정리하였습니다. 빈 스코프란 빈이 존재할 수 있는 범위를 의미합니다.지금까지 살펴본 빈은 기본적으로 "싱글톤" 스코프를 가지며, 이는 빈이 스프링 컨테이너와 함께 생성되어 스프링 컨테이너가 종료될 때까지 유지됨을 의미합니다. 스프링은 다양한 스코프를 지원합니다.싱글톤(Singleton) : 기본 스코프로, 스프링 컨테이너의 시작부터 종료까지 빈이 유지되는 가장 넓은 범위의 스코프입니다.프로토타입(Prototype) : 스프링 컨테이너가 빈의 생성과 의존성 주입까지만 관여하며, 그 이후로는 관리하지 않는 짧은 범위의 스코프입니다.웹(Web) 관련 스코프 :request : 웹 요청이 시작될 때 생성되고, 요청이 완료되면 소멸되는 스코프입니다.session : 웹 세션이 생성될 ..
-
Bean Lifecycle CallbackJava/Spring 2025. 1. 3. 17:22
스프링의 빈 생명주기 콜백에 대해 정리하였습니다. 데이터베이스 커넥션 풀이나 네트워크 소켓처럼, 애플리케이션 시작 시점에 필요한 연결을 미리 해두고 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체(빈)의 초기화와 종료 작업이 필요합니다. Ex)외부 네트워크에 미리 연결하는 객체를 하나 생성한다고 가정.실제로 네트워크에 연결되는 것은 아니고 단순히 문자열을 출력하는 코드.NetworkClient 객체는 애플리케이션의 시작 시점에 connect() method를 호출해서 연결을 맺고애플리케이션이 종료되면, disconnect() method를 호출해서 연결 끊음.로직 코드 :package hello.core.lifecycle;public class NetworkClient { ..
-
Automatic injection of dependenciesJava/Spring 2025. 1. 3. 15:43
스프링의 의존관계 자동 주입에 대해 정리하였습니다. 다양한 의존관계 주입 방법 >Spring에서는 의존성 주입(Dependency Injection)이라는 개념을 통해 객체 간의 관계를 설정하고, 객체간의 의존성을 관리합니다. #1 생성자 주입: 객체가 생성될 때 의존성을 주입하는 방법입니다. 생성자의 매개변수로 필요한 의존 객체를 전달합니다.생성자 호출시점에 딱 1번만 호출되는 것이 보장되므로, 불변 & 필수 의존관계에 사용합니다.@Componentpublic class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy di..
-
Component ScanJava/Spring 2024. 12. 20. 16:34
스프링의 유용한 기능인 컴포넌트 스캔에 대해 정리하였습니다. 컴포넌트 스캔과 의존관계 자동 주입 >스프링 빈을 등록할 때, 일반적으로 자바 어노테이션의 @Bean이나 XML의 태그를 사용하여 직접 등록해야 합니다. 그러나 서비스의 규모가 커질수록 등록해야 할 스프링 빈의 수가 증가하여, 설정 정보가 누락될 가능성이 높아집니다.이를 해결하기 위해 스프링은 컴포넌트 스캔 기능을 제공하며, 이를 통해 스프링 빈을 자동으로 등록할 수 있습니다.스프링은 또한 스프링 빈 간의 의존 관계를 자동으로 주입해주는 기능도 제공합니다. 설정 파일에 @ComponentScan 어노테이션을 사용하여 컴포넌트 스캔 기능을 활성화합니다.컴포넌트 스캔은 프로젝트 내에서 @Component 어노테이션이 붙은 클래스를 모두 찾아..