Ginny H
Ginny
Ginny H

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Ginny H

Ginny

Back-end/SpringBoot

[SpringBoot] 스프링 빈 의존관계 설정하기

2022. 6. 23. 17:30

스프링 빈 의존관계 설정하는 데에는 두 가지 방법이 있다.

1. 컴포넌트 스캔 + 자동 의존 관계

2. 자바 코드로 직접 등록

 

1. 컴포넌트 스캔 + 자동 의존 관계

  • 컴포넌트 스캔

컨트롤러, 서비스단, 레포지토리단 앞에 어노테이션으로

@Controller, @Service, @Repository 을 붙여주면, 스프링 빈으로 자동 등록된다.

이때 각 어노테이션은 내부적으로는 @Component가 들어있고, 이를 통해 컴포넌트 스캔하고, 스프링빈 등록된다.

 

  • 자동 의존 관계 설정
    1. @Autowired
    2. @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
    'Back-end/SpringBoot' 카테고리의 다른 글
    • IOC(Inversion of Control, 제어의 역전)란
    • [SpringBoot] .idea 디렉토리 제외하기
    • [SpringBoot] AOP란?
    Ginny H
    Ginny H

    티스토리툴바