| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
Tags
- 오류
- MSI
- 티스토리 블로그
- 오라클
- 전화번호부
- 환경설정
- for문
- 설정
- 백준문제
- Ajax
- 공부
- 무결성 제약조건
- Oracle
- jsp
- 깃허브 블로그
- while
- ORA-01407
- 이클립스
- ORA-02292
- 별 찍기
- 스프링
- 파워서플라이
- 오류모음
- 백준
- 백준문제풀이
- 이클립스단축기
- spring
- 자바
- 순환문
- 인터페이스
Archives
- Today
- Total
danDevlog
[Spring Boot] 자바 코드로 직접 스프링 빈 등록하기 본문
728x90
- 자바 코드로 직접 스프링 빈 등록
직접 스프링 빈에 등록하기 위해서 컴포넌트 스캔 방식을 사용할때 추가했던 어노테이션들(@Service, @Autowired, @Repository) 들을 삭제해준다 (@Controller는 제외)
그런 다음 service 패키지 내에 SpringConfig라는 자바클래스를 작성한다.
package hello.hellospring;
import hello.hellospring.repository.MemberRepository;
import hello.hellospring.repository.MemoryMemberRepository;
import hello.hellospring.service.MemberService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SpringConfig {
@Bean // Bean을 등록하겠다
public MemberService memberService() {
return new MemberService(memberRepository());
}
// MemberService 생성자 매개변수에 memberRepository가 필요하므로 빈으로 등록해준다
@Bean
public MemberRepository memberRepository() {
return new MemoryMemberRepository();
// 인터페이스는 new생성자가 사용불가하므로, 구현체로 생성한다.
}
}
DI에는 필드 주입, setter 주입, 생성자 주입 이렇게 3가지 방법이 있다.
의존관계가 실행중에 동적으로 변하는 경우는 거의 없으므로 생성자 주입을 권장한다.
// Bean의 장점
// 지금은 구현체가 임시로 만든 DB인데 만약 실제 DB로 옮겨진다면,
// 컴포넌트 스캔 방식은 다수의 코드를 바꿔야하지만,
// Bean 방식은 MemoryMemberRepository을 DBMemoryMemberRepository로 변수명만 바꿔주면 끝난다
- 컴포넌트 스캔 / 직접 스프링 빈 등록 두 가지 방식은 어떤 상황에서 사용되는가?
실무에서는 주로 정형화된 컨트롤러, 서비스, 리포지토리 같은 코드는 컴포넌트 스캔을 사용한다.
정형화 되지 않거나, 상황에 따라 구현 클래스를 변경해야 하면 설정을 통해 스프링 빈으로 등록한다
*XML로 설정하는 방식은 최근에는 잘 사용하지 않는다.
'Spring 입문' 카테고리의 다른 글
| [Spring Boot] 스프링 DB 접근 기술 - H2 데이터베이스 / 순수JDBC (0) | 2022.03.27 |
|---|---|
| [Spring Boot] 회원 관리 예제 - 회원 웹 기능(홈 화면, 등록, 조회 기능) (0) | 2022.03.26 |
| [Spring Boot] 컴포넌트 스캔과 자동 의존관계 설정 (0) | 2022.03.26 |
| [Spring Boot] 회원 관리 예제 - 서비스 개발 / 서비스 테스트 (0) | 2022.03.22 |
| [Spring Boot] 회원 관리 예제 - 회원 리포지토리 테스트 케이스 작성 (0) | 2022.03.22 |
Comments