본문 바로가기

강의 내용 정리/스프링 핵심 원리 기본

7-7. 어노테이션 직접 만들기 ~ 7-9. 자동vs수동등록

문자는 컴파일 시점에 체크가 안됨. ( 컴파일은 되는데 런타임오류 )

 

이렇게 해두면 @MainDiscountPolicy 하면 위에 있는 어노테이션 기능들이 다 동작함 스프링 컨테이너 안에서

( @Qualifier 줄 빼고 다

기본 어노테이션 파일.

여기서 가져옴. )

 

 

우리가 만든걸 쓰자.

 

쓰는 곳에서도 그냥 @MainDiscountPolicy 붙이면 됨.

 

 

 

@Primary 로 해결이 되면 걍 그걸 써라.

 

 

 

 

 

 

 

 

 

------------------------------------------------------------------- 7-8. 조회한 빈이 모두 필요할 때, List, Map

 

 

 

 

이렇게 해두면 

AutoAppConfig 에서 컴포넌트 스캔을 해서 FixDiscountPolicy, RateDiscountPolicy 를 띄움.

-> 내가 지금 DiscountService 생성자 주입을 하고 있으니까 @Component 달린 필요한, 방금 올린 DiscountPolicy 타입의 FixDiscountPolicy, RateDiscountPolicy 을 주입받음. ( @Autowired )

맵, 리스트 둘 다 받음 ( 리스트는 value만 출력됨. )

맵은 key = value

 

 

 

----------------------------------------

추가로 TDD로 만들어보자.

 

discount 오타 , 바로 밑 사진에 고침

고객이 있을 때 10000원을 결제 했을 때 고정할인으로 하겠다는 상황 가정 후 테스트케이스 작성 -> 이후 진짜코드작성

 

 

첫 assert : discountService 변수에 DiscountService 객체가 잘 들어왔나 검사

두번째 assert : 구한 discountPrice 가 ( 방금 만든 discount 메서드 ) 1000원이 맞는지 검사

 

discount 메서드 완성.

 

결론 : Map이용하면 편리하게 동적으로 다형성을 헤치지 않고 모든 빈을 사용가능

 

 

 

 

 

 

------------------------------------- 7-9. 자동, 수동의 올바른 실무 운영 기준

 

점점 자동으로 가는 추세

스프링부트는 자동을 깔고있다

 

Config 파일은 프로젝트 루트에 놓으라고함. -> 컴포넌트 스캔 위해서 ( 전에 배움 ) -> 이 파일을 읽으면서 전체적인 흐름을 파악할 수 있다.

 

 

 

수동등록

DiscountPolicy를 눌러서 각각 들어가서 Fix, Rate이 있는걸 파악하는 것보다  이런 Config 파일에 모아두는게 파악하기 훨씬 유리하다. (특히 여러명이 개발할 때 )

 

ㅋㅋㅋㅋ추상화가 남이 한거보면 난해함. 물론 내가 할땐 좋음.

 

 

자동으로하고싶으면 패키지에라도 모아놔라

이렇게.

스프링과 스프링부트가 자동등록하는 빈들은 그냥 쓰자. 이유가 다 있다.

 

 

 

# 정리

수동 - 자바코드(@Configuration, @Bean) , xml

자동 - @ComponentScan

수동 - 자바코드(@Configuration, @Bean) , xml

자동 - @ComponentScan

수동 - 자바코드(@Configuration, @Bean) , xml

자동 - @ComponentScan

Recent Posts
Popular Posts
Recent Comments