Spring45 #5 컴포넌트 스캔 컴포넌트 스캔 1. 컴포넌트 스캔과 의존관계 자동 주입 수동으로 스프링 빈을 등록하는 경우, 자바 코드에서 @Bean을 직접 적고 등록할 스프링 빈을 나열했다. 하지만 이런 방식은 등록해야 할 스피링 빈이 많아질 수록 효율성이 떨어질 수 밖에 없다. 스프링은 설정 정보로 스프링 빈을 나열하지 않아도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. [컴포넌트 스캔] @Configuration @ComponentScan public class AutoAppConfig { } 컴포넌트 스캔을 사용하려면 @ComponentScan을 설정 정보에 붙여주면 된다. 기존의 설정 정보인 AppConfig와는 달리 AutoAppConfig는 내부에 스프링 빈에 관련된 코드가 단 하나도 없다. 컴포넌트.. 2021. 5. 14. #4 싱글톤 컨테이너 싱글톤 컨테이너 1. 순수한 DI 컨테이너의 문제점 스프링을 사용하지 않는 순수한 DI 컨테이너인 AppConfig는 코드상 요청을 받을 때마다 객체를 새로 생성 하게 된다. [스프링을 사용하지 않은 AppConfig] public class AppConfig { public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } public MemberRepository memberRepository() { return new MemoryMemberRepository(); } public OrderService orderService() { return new OrderServiceImp(memberRepos.. 2021. 5. 14. #3 스프링 빈 조회 스프링 컨테이너 생성 과정 1. 스프링 컨테이너 생성 다음과 같은 형식으로 스프링 컨테이너를 생성 할 수 있다. [스프링 컨테이너 생성] //스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); new AnnotationConfigApplicationContext()를 사용해 컨테이너를 생성하며, 매개변수로 구성 정보를 넘긴다. ex) AppConfig와 같이 객체들의 의존 관계를 설정해 놓은 클래스 2. 스프링 빈 등록 의존 관계가 정의 된 메소드에 @Bean을 붙여 등록한다. 빈 이름은 메소드 이름을 사용한다. [빈 이름 지정] @Bean(name="이름") 위.. 2021. 5. 14. #2 의존성 주입(DI), 제어의 역전( IOC), 스프링 컨테이너의 사용 의존성 주입 1. 의존성 주입(DI)의 필요성 다음과 같은 주문 서비스를 만든다고 하자. [주문 서비스 역할 관계도] 그림과 같이 주문 서비스는 회원 저장소와 할인 정책을 의존해서 역할을 수행한다. 스프링 핵심 원리 게시글은 위의 서비스를 제공하는것을 전제로 각종 예시를 설명할 예정이다. [주문 서비스 메서드 명 관계도] 위의 관계도는 주문 서비스에 사용되는 실질적인 클래스와 인터페이스 명과 의존관계를 나타낸다. 위의 관계도에서 알 수 있듯이 주문 서비스를 구현한 OderServiceImpl 클래스는 회원 저장소 역할의 MemberRepository와 할인정책 역할을 하는 DiscountPolicy의 인터페이스를 의존한다. 관계만 볼 경우 '추상화에 의존한다'라는 DIP와, 확장은 가능하며 변경은 불가인.. 2021. 5. 13. 이전 1 ··· 8 9 10 11 12 다음