목록Spring (78)
빙응의 공부 블로그

📝빈 스코프 지금까지 학습에서 스프링 빈이 스프링 컨테이너가 생성될 때 함께 생성되어 스프링 컨테이너가 종료될 때 같이 종료된다고 학습하였다. 이것은 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문이다. 스코프는 번역 그대로 빈이 존재할 수 있는 범위를 뜻한다. 스프링의 스코프들 싱글톤 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. 프로토타입 : 요청할 때마다 새로운 빈 인스턴스를 생성하며 의존관계 주입까지만 한다. 웹 관련 스코프 request : 웹 요청이 들어오고 나갈때까지 유지되는 스코프 session : 웹 세션이 생성되고 종료될 떼 까지 유지되는 스코프 application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프 📝프로토타입 스..

📝빈 생명주기 콜백 데이터베이스 커넥션이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다. 스프링을 통해 이러한 초기화 작업과 종료 작업 진행을 빈 생명주기 콜백이라 한다. 간단하게 외부 네트워크에 미리 연결하는 객체를 하나 생성한다고 가정하자. 실제로 네트워크에 연결하는 것은 아니고, 단순한 문자만 출력한다. 이 NetworkClient는 애플리케이션 시작 시점에 connect()를 호출해서 연결을 맺어 준다 애플리케이션 종료시 disConnect를 호출해 연결을 끊는다. public class NetworkClient { private String url; public N..

📝롬복과 최신 트랜드 막상 개발을 해보면, 대부분이 다 불변이고, 그래서 다음과 같이 필드에 final 키워드를 사용한다. 그런데 생성자도 만들고, 주입받는 값을 대입하는 코드도 만들어야 한다. 스프링은 Lombok을 이용하여 간결하게 코딩이 가능하다. 생성자 자동 생성 기본코드 @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discou..

📝다양한 의존관계 주입 방법 [Spring]의존성 주입(DI) (tistory.com) [Spring]의존성 주입(DI) 1. 의존성 주입에 대해 DI 두 객체 간의 관계를 결정해주는 디자인 패턴이다. DI는 인터페이스를 사이에 둬서 클래스 레벨에서의 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 동적으로 quddnd.tistory.com 생성자 주입 수정자 주입 필드 주입 일반 메서드 주입 생성자 주입 이름 그대로 생성자를 통해서 의존 관계를 주입 받는 방법이다. 특징은 다음과 같다. 생성자 호출시점에 딱 1번만 호출되는 것을 보장(싱글톤) 불변, 필수 의존관계에 사용 불변 : 프로그래밍에는 모든 가능성을 열어두지 않고 불변성을 지켜야 하는 부분이 존재한다. 필수 : 생성자에는 값을 무조건 넣는 ..

📝컴포넌트 스캔과 의존관계 자동 주입 지금까지 스프링 빈을 등록할 때는 자바 코드의 @Bean이나 XML의 을 사용하였다. 실무에서는 수많은 빈이 있어 등록에 문제가 있다. 그래서 스프링은 설정 정보 없이 자동으로 스프링 빈을 등록하는 컴포넌트 스캔 기능을 제공한다. @Configuration @ComponentScan( //기존 예제 코드를 유지하기 위해 필터 excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class)) public class AutoAppConfig { } 컴포넌트 스캔을 사용하려면 먼저 @ComponentScan을 설정 정보에 붙여주어야 한다. 또한 excludeF..

📝웹 애플리케이션과 싱글톤 스프링은 태생이 기업용 온라인 서비스 기술을 지원하기 위해 탄생했다. 대부분의 스프링 애플리케이션은 웹 애플리케이션이다. 물론 웹이 아닌 애플리케이션 개발도 가능하다. 그리고 웹 애플리케이션 특성한 다중 처리가 필수이다. 기본적인 컨테이너는 서비스 요청마다 MemberServie 객체를 생성해야 된다. 그러나 이렇게 되면 사용자가 많을 시 수많은 객체가 생성되어 메모리 낭비가 심해진다. 그래서 스프링 컨테이너들은 1개의 객체만을 생성하는 싱글톤 패턴을 사용한다. 📝싱글톤 패턴 (추후 따로 포스팅할 예정) 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. 그래서 객체 인스턴스를 2개 이상 생성하지 못하도록 막는 것이다. package com.example.b..