티스토리 뷰
728x90
반응형
Spring DI
의존 : 한 클래스가 다른 클래스의 메서드를 실행할 때 '의존'한다
의존하는 객체를 직접 생성하는 대신 의존 객체를 전달받는 방식 : 생성자, setter()
- 생성자 방식 :
- Bean 객체를 생성하는 시점에 모든 의존 객체가 주입
- 생성자의 파라미터 수가 많아지면 생성자 코드를 확인해야함
- setter() 방식 :
- 메서드 이름을 통해 어떤 의존 객체가 주입되는지 알 수 있음
- 필요한 의존 객체가 전달받지 못해도 Bean 객체가 생성되기 때문에 문제
- 생성자 방식 :
객체를 생성하고 의존 객체를 주입하는 기능을 분리하여 변경의 유연함 : @Configuration Spring 설정 클래스
ApplicationContext(BeanFactory)는 Bean 객체의 라이프 사이클을 관리 : 스프링 컨테이너
설정 클래스를 이용하여 컨테이너를 생성하고 컨테이너가 Bean 객체 관리
Bean 객체는 싱글톤 객체. @Bean 붙은 메서드 이름을 Bean 객체 이름으로 사용
@Import : 설정 클래스에서 함께 사용할 다른 설정 클래스를 지정
의존 자동 주입
@Autowired : 스프링 자동 주입 기능. 해당 타입의 Bean을 찾아 필드에 할당
- 생성자, setter()를 사용해서 의존 주입을 명시하지 않아도 됨
- 메서드에 자동주입 시 파라미터 타입에 해당하는 Bean 객체를 찾아 주입
@Qualifier : 자동 주입 가능한 Bean이 두개 이상일 때 주입할 빈을 지정
- @Autowired 처럼 필드와 메서드에 모두 적용 가능
- @Qualifier 없다면 Bean 객체 이름(메서드명)으로 구분
Component Scan
@ComponentScan : 스프링이 직접 클래스를 검색해서 Bean 으로 등록해주는 기능
- basePackages 속성값 : 스캔 대상 패키지 목록 지정
- excludeFilters 속성값 : 스캔 대상 제외
@Component : 컴포넌트 스캔 대상 클래스
- @Controller, @Service, @Repository, @Aspect, @Configuration 도 스캔 대상
- 자동 등록된 Bean 이름은 클래스 이름의 첫 글자를 소문자로 바꾼 값
- 수동 등록한 Bean이 우선으로 등록하여 한개만 존재
728x90
반응형
'Spring' 카테고리의 다른 글
Spring JDBC (Java DataBase Connection) (0) | 2020.05.16 |
---|---|
AOP (Aspect Oriented Programming) (0) | 2020.05.12 |
Eclipse에서 Maven 프로젝트 생성, Git Hub 연동 (0) | 2020.05.02 |
Spring 버전 차이 (0) | 2019.07.15 |
JPA Hibernate (0) | 2019.07.14 |
반응형
300x250