스프링 빈 의존관계 설정하는 데에는 두 가지 방법이 있다.
1. 컴포넌트 스캔 + 자동 의존 관계
2. 자바 코드로 직접 등록
1. 컴포넌트 스캔 + 자동 의존 관계
- 컴포넌트 스캔
컨트롤러, 서비스단, 레포지토리단 앞에 어노테이션으로
@Controller, @Service, @Repository 을 붙여주면, 스프링 빈으로 자동 등록된다.
이때 각 어노테이션은 내부적으로는 @Component가 들어있고, 이를 통해 컴포넌트 스캔하고, 스프링빈 등록된다.
- 자동 의존 관계 설정
- @Autowired
- @RequiredArgsConstructor (더 권장)
@Autowired를 생성자 앞에 붙여주면, 객체 생성시에 스프링빈에 주입함
이때, 생성자가 1개이면 생략할 수 있다.!
혹은 생성자를 주입하는 방법도 있다. (더 권장)
@RequiredArgsConstructor 을 사용하면, final이 선언된 모든 필드를 인자로 하는 생성자를 자동 생성해준다.
// 1. @Autowired 사용
@Controller
public class TestController {
private final TestService testService;
@Autowired
public TestController(TestService testService) {
this.testService = testService;
}
}
// 2. @RequiredArgsConstructor 사용
@RequiredArgsConstructor
@Service
public class TestService {
private final TestRepository testRepository;
...
}
2. 자바 코드로 직접 등록
SpringConfig파일을 새로 만들어서 등록해준다.
@Configuration
public class SpringConfig {
@Bean
public TestService testService() {
return new TestService(testRepository());
}
}
주로 실무에서는 간편한 컴포넌트 스캔을 사용하나,
구현 클래스를 변경해야하는 상황이 있을 경우 직접 자바 코드로 등록한다!
Reference
'Back-end > SpringBoot' 카테고리의 다른 글
IOC(Inversion of Control, 제어의 역전)란 (0) | 2022.07.11 |
---|---|
[SpringBoot] .idea 디렉토리 제외하기 (0) | 2022.06.24 |
[SpringBoot] AOP란? (0) | 2022.06.23 |