Spring/스프링 핵심 원리 - 기본편(8)
-
스프링 핵심 원리 - 기본편 # Section 9
❓ 빈 스코프스프링의 다양한 스코프싱글톤 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프프로토타입 : 프로토타입 빈의 생성과 의존관계 주입까지만 관여하는 스코프웹 관련 스코프request : 웹 요청이 들어오고 나갈때 까지 유지됨session : 웹 세션이 생성되고 종료될 때 까지 유지 됨application : 웹의 서블릿 컨텍스트와 같은 범위로 유지 됨❓ 프로토타입 빈@Scope("prototype")@Componentpublic class HelloBean {} 핵심은 프로토타입 빈을 생성하고, 의존관계 주입, 초기화까지만 처리한다는 것.이후엔 프로토타입 빈을 관리하지 않음 따라서 @PreDestroy 같은 종료 메서드를 호출 하지 않음 ❓ 웹 스코프웹 환경에서..
2024.07.06 -
스프링 핵심 원리 - 기본편 # Section 8
❓ 빈 생명주기 콜백 시작스프링 빈은 간단하게 다음과 같은 라이프사이클을 가진다스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸전 콜백 -> 스프링 종료초기화 콜백 : 빈이 생성되고, 빈의 의존관계 주입이 완료된 후 호출소멸전 콜백 : 빈이 소멸되기 직전에 호출 빈 생명주기 콜백의 3가지 방법1. 인터페이스 InitalizingBean, DisposableBeanpublic class NetworkClient2 implements InitializingBean, DisposableBean { private String url; public NetworkClient2() { System.out.println("생성자 호출, url..
2024.07.06 -
스프링 핵심 원리 - 기본편 # Section 7
❓ 다양한 의존관계 주입 방법의존관계 주입 방법생성자 주입수정자 주입 (setter 주입)필드 주입일반 메서드 주입생성자 주입생성자를 통해서 의존 관계를 주입특징생성자 호출시점에 딱 1번만 호출되는 것이 보장불편, 필수 의존관계에 사용@Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discount..
2024.07.02 -
스프링 핵심 원리 - 기본편 # Section 6
❓ 컴포넌트 스캔설정 코드 @Configuration @ComponentScan( excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = Configuration.class)) public class AutoAppConfig { } 사용 할 때// @Component 어노테이션으로 등록 가능@Componentpublic class MemoryMemberRepository implements MemberRepository {} @Componentpublic class RateDiscountPolicy implements DiscountPolicy {} 컴포넌트 스캔과 자동 의존관계 주입이 동작하는 원리 @ComponentScan 은 ..
2024.07.02 -
스프링 핵심 원리 - 기본편 # Section 5
❓ 웹 애플리케이션과 싱글톤스프링은 태생이 기업용 온라인 서비스 기술을 위해 탄생웹 애플리케이션은 보통 여러 고객이 동시에 요청요청 당 객체를 생성하면 메모리 낭비가 심함1개의 객체만 생성하고 공유하도록 설계 그것이 싱글톤 패턴❓ 싱글톤 패턴클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴그래서 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야 함priavte 생성자를 사용해서 외부에서 임의로 new 키워드를 사용하지 못하도록 함public class SingletonService { // 1. static 영역에 객체를 딱 1개만 생성 private static final SignletonService instance = new SignletonService(); // 2..
2024.07.02 -
스프링 핵심 원리 - 기본편 # Section 4
❓ 스프링 컨테이너ApplicationContenxt 를 스프링 컨테이너라 한다.ApplicationContext 는 인터페이스다.스프링 컨테이너 생성 과정스프링 컨테이너 생성스프링 빈 등록스프링 빈 의존관계 설정 - 준비스프링 빈 의존관계 설정 - 완료설정 정보를 참고해서 의존관계를 주입(DI) 한다.❓ 스프링 컨테이너의 등록 된 빈 조회 방법@Test@DisplayName("모든빈 출력하기")void findAllBean() { String[] beanDefinitionNames = ac.getBeanDefinitionNames(); for (String beanDefinitionName : beanDefinitionNames) { Object bean = ac.getBean(..
2024.06.09