목록BE/Spring (178)
오봉이와 함께하는 개발 블로그
스프링 빈 조회 - 상속 관계 빈을 조회할 때 상속관계로 되어 있으면 모든 빈이 조회된다 즉, 부모 타입으로 조회하면 자식 타입도 함께 조회된다. 모든 자바 객체의 최고 부모인 Object타입으로 조회하면 모든 스프링 빈을 조회함. 예제 코드 import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; public class ApplicationContextExtendsFindTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(TestConfig.clas..
스프링 빈 조회 - 기본 스프링 컨테이너에서 스프링 빈을 찾는 가장 기본적 조회 방법 ac.getBean(빈 이름, 타입) ac.getBean(타입) 조회 대상 스프링 빈이 없다면 예외 발생 NoSuchBeanDefinitionException: No bean named 'xxxxx' available package hello.core.beanfind; /* ... */ import static org.assertj.core.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*; public class ApplicationContextBasicFindTest { AnnotationConfigApplicationContext ..
스프링 컨테이너 생성 스프링 컨테이너가 생성되는 과정? ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext를 스프링 컨테이너라 한다. ApplicationContext는 인터페이스이다. 스프링 컨테이너는 XML기반으로 만들 수 있고, 어노테이션 기반의 자바 설정 클래스로 만들 수 있다. AppConfig를 사용했던 방식이 어노테이션 기반 자바 설정 클래스로 스프링 컨테이너를 만든 것 AnnotationConfigApplicationContext는 ApplicationContext 인터페이스의 구현체다. 스프링 컨테이너 생성 과정 1. 스프링 컨테이너 ..
스프링으로 전환 순수한 자바 코드만으로 DI를 적용했지만, 스프링으로 전환하자. AppConfig 스프링으로 변경 @Configuration public class AppConfig { @Bean public MemberSerivce memberSerivce() { return new MemberServiceImpl(memberRepository()); } @Bean public MemoryMemberRepository memberRepository() { return new MemoryMemberRepository(); } @Bean public OrderService orderService() { return new OrderServiceImpl(memberRepository(), discountPo..
IoC, DI, 컨테이너 IoC(Inversion of Control) 제어의 역전 기존 프로그램은 개발자가 직접 컨트롤 하는 방식이지만 IoC는 프레임워크가 대신 호출해 주는 것이다 기존 프로그램은 클라이언트 구현 객체가 필요한 서버 구현 객체를 생성, 연결, 실행 했다. 구현 객체가 프로그램의 제어 흐름을 스스로 조종했다. 개발자 입장에서는 자연스러운 흐름 AppConfig가 등장한 이후 구현 객체는 자신의 로직을 실행하는 역할만 한다. 프로그램 제어 흐름은 AppConfig가 가져감 OrderServiceImpl은 필요한 인터페이스를 호출하지만 어떤 구현 객체가 실행될지는 모름 프로그램의 제어 흐름은 AppConfig가 가지고 있다. 심지어 인터페이스의 구현 객체도 AppConfig가 생성한다. A..