의존성 주입(Dependency Injection)이란
- 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴
- 인터페이스를 사이에 둬서 클래스 레벨에서 의존관계가 고정되지 않도록 런타임 시에 관계를 다이나믹하게 중집
예시
public Class DI{
// 강한 결합
// private로 선언되어 있어서 오류가 난다.
public static void companyTest1(){
Company c1 = new Company();
}
// 약한 결합
// DI로 인해 오류가 나지 않는다.
public static void companyTest2(Company c){
Company c2 = c;
}
}
class Company{
String empNo;
String empName;
private Company() {}
}
Company라는 클래스를 선언했을 때, 생성자가 private이기 때문에 companyTest1에서는 Company 생성자에 접근할 수 없다.
그러나 companyTest2에서는 인수로 받은 Company 변수를 받기 때문에 정상적으로 작동한다.
DI Annotation
@SpringBootApplication
- @Configuration: 자바 코드로 작성된 클래스를 설정 파일로 지정
- @EnableAutoConfiguration: Spring Application Context 생성 시 지정해둔 설정 값을 이용해 자동으로 설정
- @ComponetScan: 지정한 위치 이하에 있는 @Component와 @Configuration이 붙은 Class를 스캔해 Bean에 자동 등록
- @Configuration: 클래스를 스프링 설정으로 사용
- @Bean: 메서드의 리턴 값을 빈 객체로 사용
Bean
- 스프링이 직접 생성과 제어를 담당하는 객체
BeanFactory
- 스프링의 IoC를 담당하는 핵심 컨테이너
- Bean 등록, 생성, 조회, 반환 담당
- BeanFactory를 확장한 ApplicationContext를 사용
ApplicationContext
- Bean 관리 + 추가 서비스 제공
// 추후 코드 추가..
'IT > 개발' 카테고리의 다른 글
[SpringBoot] Transaction 사용하기 (0) | 2021.09.24 |
---|---|
[SpringBoot] MyBatis 간단 기초 (0) | 2021.09.22 |
[SpringBoot] 백엔드에서 Form 데이터 받기 (0) | 2021.09.21 |
[SpringBoot] Visual Studio Code로 Spring Boot 프로젝트 만들기 (0) | 2021.09.19 |
[git] 깃 브랜치 연결 (간단사용법) in Linux (0) | 2021.09.07 |