본문 바로가기

Spring13

[Spring] 스프링 MVC의 구조 MVC 패턴 MVC 패턴이란 애플리케이션을 구성하는 요소를 역할에 따라 Model, View, Controller로 나누어 구분한 패턴이다. 2023.01.04 - [Spring] - [Spring] MVC 패턴 [Spring] MVC 패턴 MVC 패턴이란 MVC는 Model, View, Controller의 약자로 애플리케이션을 개발할 때 구성요소를 3가지의 역할로 구분한 것을 말한다. MVC 패턴의 탄생 배경 MVC 패턴 이전에는 비즈니스 로직과 뷰 로직을 같 dangdangee.tistory.com 스프링 MVC 웹 계층에 서블릿 API를 기반으로 클라이언트의 요청을 처리하는 모듈이다. Model, View, Controller로 역할을 분리해 각자의 영역에 집중하여 효율적으로 개발이 가능하다. 스.. 2023. 1. 9.
[Spring] 빈 생명주기 콜백 데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다. 스프링 빈의 라이프사이클 스프링 빈은 간단하게 다음과 같은 라이프 사이클을 가진다. 객체생성 -> 의존관계 주입 따라서 초기화 작업은 의존관계 주입이 끝난 후에 수행되어야 한다. 그럼 어떻게 의존관계 주입이 끝난 시점을 알 수 있을까? 스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해서 초기화 시점을 알려주는 다양한 기능을 제공한다. 또한 스프링은 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 준다 스프링 빈의 이벤트 라이프사이클 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관.. 2022. 12. 28.
[Spring] 같은 타입으로 조회된 빈이 여러 개일 경우 @Autowired는 타입으로 빈을 조회한다. 만약 같은 타입으로 등록된 빈이 여러 개가 있을 경우 어떻게 될까? @Component public class FixDiscountPolicy implements DiscountPolicy {} @Component public class RateDiscountPolicy implements DiscountPolicy {} DiscountPolicy의 하위 타입인 FixDiscountPolicy와 RateDiscountPolicy 모두 스프링 빈으로 등록을 하였다. @Autowired private DiscountPolicy discountPolicy 이 상황에서 DiscountPolicy에 자동 주입을 실행하면 NoUniqueBeanDefinitionExce.. 2022. 12. 28.
[Spring] 의존관계 자동 주입 의존관계 주입은 크게 4가지 방법이 있다. 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메서드 주입 생성자 주입 생성자를 통해서 의존관계를 주입받는 방법이다. @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberReposi.. 2022. 12. 27.
[Spring] 컴포넌트 스캔 지금까지 @Configuration와 @Bean을 이용하여 수동으로 스프링 컨테이너에 스프링 빈을 등록하는 방법을 사용하였다. 하지만 등록해야 할 빈의 개수가 너무 많다면 하나하나 수동으로 등록하기 쉽지 않을 수 있다. 그래서 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. 컴포넌트 스캔 컴포넌트 스캔을 하기 위해서는 @ComponentScan을 설정 정보에 붙여주면 된다. @Configuration @ComponentScan public class AutoAppConfig { } 앞서 봤던 AppConfig와 달리 컴포넌트 스캔을 이용하면 @Bean을 등록하지 않아도 된다. 자동으로 @Component가 붙은 클래스를 스캔해서 스프링 빈으로 등록한다. @.. 2022. 12. 27.
[Spring] 싱글톤 패턴과 싱글톤 컨테이너 우리는 스프링 컨테이너에 저장된 빈들을 가져와서 사용할 수 있다. 하지만 만약 빈들을 가져올 때마다 new 연산자를 통해 객체를 새로 생성해서 가져올 경우 여러 비효율적인 문제가 있을 수 있다. 이와 같은 문제를 해결하기 위해 스프링 컨테이너는 객체 인스턴스를 싱글톤으로 관리한다. 싱글톤 패턴 싱글톤 패턴이란 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. 구현방법은 다음과 같다. public class SingletonService { private static final SingletonService instance = new SingletonService(); public static SingletonService getInstance() { return instance; }.. 2022. 12. 26.