전체 글 (78) 썸네일형 리스트형 컴포넌트 스캔 ∨ 등록해야할 스프링빈이 엄청 많아지면 @Bean으로 다 등록해주기가 까다로워짐 => 스프링이 컴포넌트 스캔 기능 제공 이전 : @Configuration에서 @Bean을 통한 수동 bean 등록 - 의존관계가 직접 명시되어있었다. 지금 하는 거 : @ComponentScan을 통한 자동 bean 등록 (즉, @Bean 사용X) - @Component가 붙은 클래스들을 스캔 -> 스프링빈으로 등록 - 각 빈에 대해 의존관계를 명시하지 않는다 => 그럼 어떻게 DI 주입? => @Autowired가 의존관계를 자동으로 주입해준다. ● 예시 더보기 ① 컴포넌트 스캔 기능을 이용하기 위해서 @ComponentScan을 붙인 설정정보(@Configuration) AutoAppConfig를 만들었다. cf. 저 .. 2회차 결과 section 5 ~ 6 싱글톤컨테이너 & 컴포넌트스캔 싱글톤 컨테이너 이번 챕터는 머릿속에 잘 정리했기 때문에 여긴 메모만 아무렇게나 했다. ∨ 웹애플리케이션은 고객 요청이 끊임없이 들어옴 : 그때마다 새로운 객체를 생성하는건 좋지 X : 트래픽↑면 메모리효율↓↓↓↓ ∴ 싱글톤 더보기 예제 public class SingletonService { // static 영역에 객체 instance를 하나 생성해서 올려둔다. private static final SingletonService instance = new SingletonService(); // 이 객체 인스턴스가 필요하면 오직 getInstance() 통해서만 조회 가능 // 매번 같은 인스턴스 반환 public static SingletonService getInstance() { return instance; .. 2회차 목표 스프링 강의 section 5 ~ 6 끝내기 스프링 빈 조회 (getBean) - 상속관계인 경우 ∨ 부모타입으로 조회 => 자식빈들이 다 끌려나옴 cf. Object타입으로 조회하면 다 조회된다. . . 부모타입으로 조회하는 경우 발생할 수 있는 여러 케이스들을 만나보자. 각 케이스에 대한 테스트코드를 작성해보며 진행하자. ※ 참고 : test코드에서 print문 찍어서 눈으로 확인하는 건 실제로 별로 의미 없고 할 일도 없다. 지금은 그냥 학습용도로 찍어보는 것이다. 실무에서는 테스트 통과&실패 사실만 의미있음! . . ∨ TestConfig : 더보기 @Configuration static class TestConfig { @Bean public DiscountPolicy reteDiscountPolicy() { return new RateDiscountPolicy(); } @Bean publi.. (컨테이너에 등록된) 스프링 빈 조회해보기 Test코드를 작성하며 진행해보자. 스프링 빈 조회하기! ① 컨테이너에 등록된 모든 빈 조회하기 ∨ 스프링 자동완성 축약어 iter : 존재하는 리스트에 대하여 향상된 for문을 만들어준다. (그냥for문 : itar) ∨ .getBeanDefinitionNames() : 스프링 빈 객체 이름 가져와 리스트로 만들어줌 ∨ .getBean(빈 이름) : 이름을 통해 스프링빈 객체를 가져와줌. 타입지정안하면 Object로 받을 수 있나보다. ∨ .getBeanDefinition(빈 이름) : BeanDefinition객체를 반환한다. class ApplicationContextInfoTest { AnnotationConfigApplicationContext ac = new Annotatio.. 스프링 컨테이너 첫 이용 이전에는 AppConfig를 직접 가져와서 DI했지만 이번에는 스프링 기능을 활용할 것이다. 스프링 DI컨테이너가 관리할 수 있도록 AppConfig 파일에 어노테이션을 추가해주자. ∨ 설정파일이라는 뜻에서 AppConfig에다가 @Configuration을 붙인다. ∨ 여기서 @Bean 메서드가 호출되어 반환된 객체는 스프링 컨테이너에 등록된다. 그러한 객체를 스프링 빈이라고 한다. 스프링 빈 이름 : 메서드 이름 import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class AppConfig { @Bean publ.. IoC/DI컨테이너 참고 (이전 학습) : DIP, OCP 원칙이 깨지는 문제를 Spring으로 해결 AppConfig 리팩터링 (+ 역할 요약) IoC/DI 컨테이너 AppConfig에다가 의존관계 주입을 맡겨보았다. ∴ 좋은 객지설의 원칙 OCP, DIP를 준수하게끔 했고, 클라이언트 코드를 변경하지 않고 구현체를 변경할 수 있었다. 지금까지 공부한 것을 요약하자면 아래와 같다. "제어 흐름에 대한 권한을 가지는 것은 내부가 아닌 외부파일 AppConfig이다. 이러한 제어의 역전(Inversion of Control)은 곧 의존관계 주입(Dependency Injection)을 실현한다." * DI와 IoC는 객체간 상호결합을 낮춰서 더욱 유연하고 객체지향적인 개발을 가능케 한다. ↓↓↓ 즉, 우리가 구현한 AppCo.. 이전 1 ··· 5 6 7 8 9 10 다음