[Spring] 톰캣과 스프링: 웹 요청의 라이프사이클 이해하기
·
Spring 기초/Spring 기초 지식
톰캣과 스프링의 웹 요청 처리방법을 이해해 보자 📌 서론 스프링은 복잡한 저수준의 소켓 통신과 스트림 처리를 추상화하여, 개발자가 고수준의 비즈니스 로직에 집중할 수 있도록 설계되었다. 이번 포스트를 통해 스프링 프레임워크와 서블릿 컨테이너(예: Tomcat)가 HTTP 요청을 어떻게 처리하는지, 그리고 이 과정에서 각각의 역할이 무엇인지 상세히 살펴보자 1. 스프링의 http 요청과 관련된 용어 이해하기 서블릿 컨테이너 스프링 애플리케이션은 일반적으로 서블릿 컨테이너(예: Tomcat, Jetty) 내에서 실행된다. 이러한 컨테이너는 저수준의 네트워크 통신을 처리하고, HTTP 요청을 서블릿 API로 변환해 애플리케이션에 전달하는 역할을 한다. DispatcherServlet DispatcherServ..
가볍게 알아보는 디자인 패턴 - 팩토리 메서드 패턴(Factory Method Pattern)
·
Spring 기초/Spring 기초 지식
팩토리 메서드 패턴에 대해서 알아보자 1. 팩토리 메서드 패턴이란? 팩토리 메서드 패턴은 객체 생성을 추상화하고 캡슐화하는 디자인 패턴이다. 스프링에서 이 패턴은 BeanFactory와 ApplicationContext를 통해 구현된다. 객체를 직접 생성하는 대신, 팩토리를 통해 객체를 요청하면, 이 팩토리가 객체 생성의 복잡성을 숨기고 필요한 객체를 제공한다. 1-1. 팩토리 메서드 패턴의 기본 구조 1. 정의 팩토리 메서드 패턴은 객체의 생성 과정을 서브 클래스에 위임하는 디자인 패턴이다. 이를 통해 클라이언트 코드는 구체적인 클래스의 인스턴스화 과정을 알 필요 없이, 객체를 생성할 수 있다. 2. 구현 방식 이 패턴은 팩토리 메서드를 정의하여, 이 메서드가 객체를 생성하고 반환하는 역할을 한다. 클..
[Spring] 자바 리플렉션과 생성자 주입의 관계
·
Spring + Java
이번 포스트에서는 Spring 프레임워크가 자바의 리플렉션 기능을 어떻게 활용하여 생성자 주입을 수행하는지에 대해 살펴보자 이번 포스트에서는 특히, 스프링의 AutowiredAnnotationBeanPostProcessor 클래스가 생성자 주입 과정에서 어떤 역할을 하는지 집중적으로 알아볼 것이다. 이 글에서는 리플렉션이 스프링 내부에서 어떻게 사용되는지에 집중하여 설명한다. 이를 통해, 스프링의 내부 동작 방식에 대한 더 깊은 이해를 얻을 수 있을 것이고 자바 리플렉션의 중요성도 알 수 있을 것이라고 생각한다. AutowiredAnnotationBeanPostProcessor 클래스는 아래와 같다. 스프링은 왜 리플렉션을 사용해서 의존성 주입을 할까? 1. 스프링이 리플렉션을 통해 하는 일은 무엇일까..
[Java] 자바 리플렉션(reflection)이란?
·
JAVA
이번 포스트에서는 자바 리플렉션과 이걸 사용하는 스프링에 대해서 알아보자 1. 자바 리플렉션이란 리플렉션이란? 리플렉션은 자바에서 클래스나 멤버에 대한 정보를 런타임에 조사하고, 조작할 수 있는 기능이다. 예를 들어, 클래스의 이름, 메서드, 필드, 생성자 등에 대한 정보를 프로그램 실행 중에 알아내고, 이를 통해 객체를 생성하거나 메서드를 호출할 수 있다. 이 기능 덕분에, 개발자는 코드의 유연성과 확장성을 높일 수 있다. 리플렉션 예시 코드를 보면 Class.forName("java.lang.String")은 String 클래스에 대한 Class 객체를 가지고 온다. 그리고 getDeclaredMethods() 메서드를 사용해서 가져온 클래스에 정의된 모든 메서드의 정보를 얻어내는 것이다. 이렇게 리..
[Spring] @Component로 스프링 빈 등록하기
·
Spring 기초/Spring 기초 지식
이번 포스트에서는 @Component를 사용하여 스프링 빈 등록하는 방법을 알아보자 📌 서론 Spring Framework의 @Component 어노테이션은 클래스 인스턴스를 스프링 빈으로 자동 등록한다. 이는 의존성 주입과 빈 생명주기 관리를 효율적으로 만들며, 스프링의 다양한 기능과도 잘 통합된다. @Component의 사용은 애플리케이션 구성을 간소화하고, 유지보수와 테스트가 쉬운 코드를 만드는 데 중요한 역할을 한다. 이를 통해 스프링 애플리케이션 개발이 더욱 간편하고 효과적이 된다. 1. @Component 사용법 및 특징 기본 사용법 @Component 어노테이션은 스프링 프레임워크에서 클래스를 자동으로 빈으로 등록하기 위해 클래스 레벨에서 사용된다. 이는 스프링 컨테이너가 애플리케이션 시작 ..
[Spring] @Bean을 사용한 스프링 빈 등록
·
Spring 기초/Spring 기초 지식
이번 포스트에는 스프링에서 가장 중요한 빈 등록 방식 @Bean에 대해 소개한다. 📌 서론 Spring Framework에서 @Bean은 매우 중요한 개념이다. 이는 개발자가 직접 제어할 수 없는 외부 라이브러리나 복잡한 구성이 필요한 객체를 스프링의 관리하에 두기 위해 사용되는 어노테이션이다. @Bean을 이해하고 올바르게 사용하는 것은 Spring 기반 애플리케이션의 효율적인 관리와 유연한 구성을 위해 필수적이다. 이를 통해 개발자는 스프링 컨테이너가 관리하는 빈(Bean) 객체를 생성하고, 이를 애플리케이션 전반에서 재사용할 수 있다. @Bean의 이해는 Spring의 의존성 주입(Dependency Injection) 기능을 깊이 이해하는 데에도 중요하며, 이는 애플리케이션의 결합도를 낮추고 유지..
[Spring] 스프링과 자바의 동시성과 병렬 처리
·
Spring 기초/Spring 기초 지식
Java의 동시성과 병렬 처리에 대해 알아보자.📌 서론백엔드 개발을 하다보면 동시성 문제에 직면하게 되는 경우가 있다. 그러나 동시성이 무엇인지 모르면 문제가 발생하는 원인조차 모를수 있기 때문에 간단하게라도 지식을 얻어두면 좋다고 생각한다. 이 글을 통해 정말 간단하게 자바의 동시성이 무엇이고 병렬 처리 기능은 어떤것이 있는지 알아보자! 1. 간단하게 알아보는 동시성 문제동시성이 뭔데?동시성이란 것은 여러 스레드가 동시에 같은 api를 호출한다고 생각하면 이해하기 쉽다.예를 들면 스프링은 멀티 스레드로 동작하는 프레임워크이기 때문에 100개의 같은 요청이 1개의 api에 동일한 시간에 발생할 수도 있다. 이 상황에는 스레드의 경쟁이 발생할 것이고 "동시성 제어"가 되지 않는다면 서버에 문제가 발생할 ..
Spring MVC의 Model, ModelAndView, ModelMap 비교
·
Spring 기초/Spring 기초 지식
Model, ModelAndView, ModelMap의 차이점 그리고 @ModelAttribute에 대해서 알아보자 📌 서론 스프링 프레임워크에서는 컨트롤러(Controller)에서 뷰(View)로 데이터를 전달하는 여러 가지 방법이 있다. 이번 포스트에서는 이러한 방법 중에서 스프링 MVC에서 사용되는 Model, ModelMap, ModelAndView의 사용에 대해 좀 더 상세하게 설명하도록 한다. 1. 스프링 부트의 모듈 이해하기 Model Model은 스프링 MVC에서 뷰 렌더링에 사용되는 데이터를 컨트롤러로부터 뷰로 전달하는 역할을 하는 기본 인터페이스다. 컨트롤러에서 Model 객체에 데이터를 추가하면, 이 데이터는 뷰로 전달되어 활용될 수 있다. Model에 데이터를 추가하고 싶다면, 'a..