본문 바로가기

Spring

(38)
[Spring] @PostConstruct, @PreDestroy @PostConstruct와 @PreDestroy 애너테이션은 약간 이론적인 내용이 있기 때문에 두 애너테이션의 역할이 무엇인지 알아보기 전에 스프링 빈의 생명주기를 먼저 알아보겠습니다. 1. 스프링 빈의 생명주기 스프링 컨테이너 생성스프링 빈 생성의존관계 주입사용스프링 종료 스프링 빈은 생성과 의존 관계 주입이 동시에 이루어지는 것이 아니라 스프링 빈 객체를 생성을 한 뒤에 의존관계 주입을 실행합니다. 이때 우리가 언제 의존관계 주입이 되는지, 또는 언제 스프링 빈이 소멸하는지를 알아보고 싶을 때 저 위의 두 애너테이션을 사용합니다. 두 애너테이션을 사용했을 때 생명주기를 나타내보자면 스프링 컨테이너 생성스프링 빈 생성의존관계 주입초기화 콜백사용소멸 전 콜백스프링 종료이렇게 나타낼 수 있습니다.초기화 ..
[Spring] 롬복 알아보기 (@RequiredArgsConstructor) lombok- Getter, Setter, 생성자를 자동으로 만들어주는 라이브러리개발 시 효율성을 높여주는 라이브러리로 상당히 많이 쓰인다. @RequiredArgsConstructor@Componentpublic class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRep..
[Spring] 의존관계 주입 방법 1. 생성자를 이용한 주입생성자 호출시점에 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 = ..
[Spring] 컴포넌트 스캔 import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.FilterType;@Configuration@ComponentScan ( excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class))public class AutoAppConfig {} @ComponenetScan : 스프링 빈을 일일이 등록하기 어렵거나 귀찮은 경우 @Compon..
[Spring] 싱글톤 패턴과 싱글톤 컨테이너 1. 싱글톤 패턴클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴 싱글톤 패턴을 사용하는 이유우리가 웹, 앱을 사용하다 보면 클라이언트가 수많은 요청들을 하는 것을 볼 수 있다.그럴 때마다 서버 입장에서는 요청이 들어올 때마다 객체를 생성하면 메모리 낭비가 심하게 되므로이를 해결할 방법이 필요했는데 이때 사용하는 것이 싱글톤 패턴이다. public class SingletonService { private static final SingletonService instance = new SingletonService(); public static SingletonService getInstance() { return instance; } private S..
[Spring] BeanFacory와 ApplicationContext 1. BeanFactory 스프링 컨테이너의 최상위 인터페이스스프링 빈을 관리하고 조회하는 역할getBean()을 제공 2. ApplicationContextBeanFactory 기능을 모두 상속받아서 제공BeanFacotry 뿐만 아니라 MessageSource, EnverionmenCapable, ApplicationEventPublishier, ResourceLoader 인터페이스 등을 상속 받고 있으므로 다양한 능력을 가지고 있다. ApplicaitonContext가 상속받는 인터페이스 소개MessageSource - 메세지소스를 활용한 국제화 기능 (한국에서 들어오면 한국어로, 영어권에서 들어오면 영어로 출력)EnvironmentCapable - 로컬, 개발, 운영등을 구분해서 처리Applica..
[Spring] 빈 조회하기 - 상속 관계 package hello.core.beanfind;import hello.core.discount.DiscountPolicy;import hello.core.discount.FixDiscountPolicy;import hello.core.discount.RateDiscountPolicy;import org.junit.jupiter.api.DisplayName;import org.junit.jupiter.api.Test;import org.springframework.context.annotation.AnnotationConfigApplicationContext;import org.springframework.context.annotation.Bean;import org.springframework.con..
[Spring] 컨테이너에 등록된 빈 조회하기 AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);@Test@DisplayName("애플리케이션 빈 출력하기")void findApplicationBean() { String[] beanDefinitionNames = ac.getBeanDefinitionNames(); for (String beanDefinitionName : beanDefinitionNames) { BeanDefinition beanDefinition = ac.getBeanDefinition(beanDefinitionName); if (beanDefinition.getRol..

반응형