SPRING (39) 썸네일형 리스트형 김영한 SPRING 기본편 7일차 웹 스코프 특징 웹 스코프는 웹 환경에서만 동작한다. 웹 스코프는 프로토타입과 다르게 스프링이 해당 스코프의 종료시점까지 관리한다.(종료 메소드가 호출된다.) 종류 reqeust : HTTP 요청 하나가 들어오고 나갈 때 까지 유지되는 스코프 sesssion : HTTP Session과 동일한 생명주기를 가지는 스코프 application : 서블릿 컨텍스트와 동일한 생명주기를 가지는 스코프 websocket : 웹 소켓과 동일한 생명주기를 가지는 스코프 @Scope를 사용해서 request 스코프로 지정했다. 로그를 출력하기 위해 MyLogger 라는 클래스를 만들었다. 빈이 생성되는 시점에 자동으로 @PostConstruct 초기화 메소드를 사용해서 uuid를 생성해서 저장한다. 이 빈은 HTTP 요.. 김영한 SPRING 기본편 6일차 빈 생명주기 콜백 스프링 빈은 객체생성 => 의존관계 주입 이라는 라이프사이클을 가진다. 스프링 빈의 이벤트 라이프사이클 스프링 컨테이너 생성 => 스프링 빈 생성 => 의존관계 주입 => 초기화 콜백 => 사용 => 소멸전 콜백 => 스프링 종료 초기화 콜백: 빈이 생성되고, 빈의 의존관계 주입이 완료된 후 호출 소멸전 콜백: 빈이 소멸되기 직전에 호출 스프링 빈 생명주기 콜백 지원 방법 3가지 1. 인터페이스(InitializingBean, DisposableBean) InitializingBeand 은 afterPropertiesSet() 메소드로 초기화를 지원한다. DisposableBean 은 destroy() 메소드로 소멸을 지원한다. 단점 이 인터페이스는 스프링 전용 인터페이스라 코드가 스프.. 김영한 SPRING 기본편 5일차 옵션처리 @Autowired(required=flase) : 자동 주입할 대상이 없으면 수정자 메소드 자체가 호출 안됨 org.springframework.lang.@Nullable : 자동 주입할 대상이 없으면 null이 입력된다. Optional(자바8) : 자동 주입할 대상이 없으면 Optional.empty 가 입력된다. 조회 빈이 2개 이상 일 때 @Autowired는 타입으로 조회한다. 타입으로 조회하기 때문에 선택된 빈이 2개 이상일 때 문제가 발생한다. NoUniqueBeanDefinitionException 오류가 발생한다. 해결 방안 1. @Autowired 필드 명 매칭 필드 명을 discountPolicy => rateDiscountPolicy 로 변경했다. 필드 명 매칭은 먼저 타.. 김영한 SPRING 기본편 4일차 컴포넌트 스캔 컴포넌트 스캔을 사용하면 스프링 설정 정보가 없어도 자동으로 스프링 빈을 등록해준다. 스프링 빈을 등록하기 위해 을 이용하여 직접 등록하지 않아도 됨 컴포넌트 스캔을 사용하려면 먼저 @ComponentScan 을 설정 정보에 붙여주면 된다. 컴포넌트 스캔을 사용하면 @Configuration이 붙은 설정 정보도 자동으로 등록 된다. 컴포넌트 스캔은 @Component 를 각 클래스에 붙여주면 된다. @Autowired 를 사용하면 생성자에서 여러 의존관계도 한번에 주입받을 수 있다. @ComponentScan은 @Component가 붙은 모든 클래스를 스프링 빈으로 등록한다. @Autowired 를 지정하면 스프링 컨테이너가 자동으로 해당 스프링 빈을 찾아서 주입한다. getBean(Mem.. 김영한 SPRING 기본편 3일차 싱글톤 @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer() { AppConfig appConfig = new AppConfig(); //1. 조회: 호출할 때 마다 객체를 생성 MemberService memberService1 = appConfig.memberService(); //2. 조회: 호출할 때 마다 객첼르 생성 MemberService memberService2 = appConfig.memberService(); //참조값이 다른 것을 확인 System.out.println("memberService2 = " + memberService2); System.out.println("memberService1 = " + memberServ.. 김영한 SPRING 기본편 2일차 스프링 컨테이너 ApplicationContext를 스프링 컨테이너라고 한다. 스프링 컨테이너는 XML , 자바 설정 클래스로 만들 수 있다. 스프링 컨테이너에 등록된 개체를 스프링 빈이라 한다. 스프링 컨테이너에 빈을 등록할때는 @Bean 을 써서 등록한다. @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } 스프링 빈은 getBean() 메소드를 사용해서 찾을 수 있다. AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); MemberService memberSe.. 김영한 SPRING 기본편 1일차 테스트 코드를 작성할때 팁 //given Member member = new Member(1L,"memberVIP", Grade.VIP); //when int discount = discountPolicy.discount(member,10000); //then assertThat(discount).isEqualTo(1000); given , when , then 으로 나누기 import static org.assertj.core.api.Assertions.*; 테스트 코드를 작성할때 Assertions.assertThat(member).isEqualTo(findMember); 위에꺼를 import 해주면 assertThat(discount).isEqualTo(0); 이렇게 줄여서 쓸 수 있다. //테스트.. 이전 1 2 3 4 5 다음