- 역할(interface)과 구현(구현체)을 분리한다. - 클라이언트단에서는 역할(인터페이스)만 알고있으면 된다. - 자바 언어의 다형성을 통해, 필요시 구현체를 갈아끼워 필요시 역할에 대한 구현체를 클라이언트 단의 수정 없이 서버의 구현 기능을 실행시점에 유연하
이와같이 구현체에서 직접 객체를 생성시 추후 MemberRepository의 구현 방식이 변경되면 클라이언트 단의 소스변경이 불가피하다.따라서 아래와 같이 변경한다.생성자를 통해 구현체를 주입하는 방식으로 변경 후,설정파일을 만들어 설정파일에서 구현체를 주입하도록 한다
@Bean 어노테이션을 통해 스프링 컨테이너에 등록 & 관리가 된다.@Configuration 어노테이션을 통해 @Bean으로 등록된 객체를 싱글톤으로 관리한다. 스프링에서 객체를 싱글톤으로 관리하는 이유는 요청이 올때마다 새로운 객체를 생성하면 비용이 커지고 비효율적
@ComponentScan 어노테이션을 통해 직접 빈을 등록하지 않고, 자동으로 스프링 빈을 등록할 수 있다.스프링 빈으로 등록할 클래스에 @Component, @Controller, @Service, @Repository 등의 어노테이션을 붙여주면 @Component
의존성 주입방식에는 아래 3가지 방식이 주로 쓰인다. (1) 생성자 주입 (2) 수정자 주입(setter) (3) 필드 주입
Autowired로 주입할 Bean이 여러개있어 중복될 경우가 있다.이를 해결 하기 위해 @Qualifier, @Primary 어노테이션을 사용한다.빈 등록시 @Qualifier("이름")을 붙여주고, 생성자 필드 파라미터 앞에도 @Qualifier("이름")을 붙여주
애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다.크게 3가지 방식이 있다. 1\. 인터페이스( InitializingBean, DisposableBean )2\