본문 바로가기

전체 글46

프로토타입 스코프 빈 스코프스코프는 빈이 존재할 수 있는 범위를 뜻함스프링은 다음과 같은 스코프를 지원   싱글톤 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프   프로토타입 : 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하는 매우 짧은 범위의 스코프   웹 관련 스코프 : request, session, apllication프로토타입 스코프프로토타입 스코프의 빈을 스프링 컨에티너에 요청스프링 컨테이너는 이 시점에 프로토타입 빈을 생성하고, 의존관계 주입스프링 컨테이너는 생성한 프로토타입 빈을 클라이언트에 반환이후 스프링 컨테이너에 같은 요청이 오면 항상 새로운 프로토타입 빈을 생성해서 반환Testpublic class PrototypeTest { @Tes.. 2024. 9. 1.
빈 생명주기 콜백 빈 생명주기 콜백데이터베이스 커넥션 풀, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화 종료 작업이 필요스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해서 초기화 시점을 알려줌스프링은 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 줌스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 소멸전 콜백 -> 스프링 종료 라이프 사이클을 가짐초기화 콜백 : 빈이 생성되고, 빈의 의존관계 주입이 완료된 후 호출소멸전 콜백 : 빈이 소멸되기 직전에 호출1. InitializingBean, DisposableBeanpublic class NetworkClient .. 2024. 9. 1.
의존관계 자동 주입 생성자 주입@Componentpublic class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired // 생략 가능 public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; } ...}생성자.. 2024. 8. 29.
@ComponentScan @ComponentScan@Bean 등을 통해서 설정 정보에 직접 등록할 스프링 빈을 지정등록해야 할 스프링 빈이 수십, 수백개라면 누락 등 문제 발생설정 정보가 없어도 자동으로 스프링 빈을 등록하는 기능@ComponentScan은 @Component가 붙은 모든 클래스를 스프링 빈으로 등록함이때 스프링 빈의 기본 이름은 클래스명을 사용하되 맨 앞글자만 소문자를 사용기본 : MemberServiceImple 클래스 -> memberServiceImpl직접 지정 : @Component("memberServiceImpl2)생성자에 @Autowired를 지정하면 스프링 컨테이너가 자동으로 해당 스프링 빈을 찾아서 주입기본 조회 전략은 타입이 같은 빈을 찾아서 주입생성자에 파라미터가 많아도 다 찾아서 자동으로 .. 2024. 8. 21.
@Configuration @ConfigurationBean을 등록할 때 싱글톤이 되도록 보장해 주는 어노테이션스프링 컨테이너에서 Bean을 관리할 수 있게 됨결론적으로 스프링 설정 정보는 항상 @Configuration 사용AppConfigpackage hello.core;import hello.core.discount.DiscountPolicy;import hello.core.discount.FixDiscountPolicy;import hello.core.discount.RateDiscountPolicy;import hello.core.member.MemberService;import hello.core.member.MemberServiceImpl;import hello.core.member.MemoryMemberReposit.. 2024. 8. 20.
Singleton 싱글톤 패턴클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴private 생성자를 사용해서 외부에서 임의로 new 키워드를 사용하지 못하도록 막아야 함SingletonServicepackage hello.singleton;public class SingletonService { private static final SingletonService instance = new SingletonService(); public static SingletonService getInstance(){ return instance; } private SingletonService(){ } public void logic(){ System.out.p.. 2024. 8. 20.