Spring/Spring_inflearn

[Spring 입문] 스프링 빈 등록, 의존성 주입

2024. 8. 11. 22:33
목차
  1. 스프링 빈 등록하는 2가지 방법
  2. 1. 컴포넌트 스캔 + 자동 의존 관계 설정
  3. 2. 자바 코드로 직접 스프링 빈 등록
  4. 의존성 주입하는 3가지 방법
  5. 1. 생성자 주입
  6. 2. 필드 주입
  7. 3. Setter 주입

 

 

스프링 빈 등록하는 2가지 방법

- 실무에서는 주로 정형화된 컨트롤러, 서비스, 리포지토리 같은 코드는 컴포넌트 스캔을 사용한다.

- 정형화되지 않거나, 상황에 따라 구현 클래스를 변경해야 하면 설정을 통해 스프링빈으로 등록한다.

(DB가 정해지지 않았을 때 구현한 코드를 추후 DB가 정해졌을 때 소스코드 수정 없이 @Bean 에 등록된 생성자만 수정해서 교체할 수 있음)

 

 

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

- @Repository, @Service, @Controller 애노테이션을 달고 @Autowired 하는 방법

 

2. 자바 코드로 직접 스프링 빈 등록

- @Repository, @Service, @Autowired 애노테이션을 제거하고 진행

- 최상단에 SpringConfig.java 클래스를 만들어서 @Bean 등록

 

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
    public MemberService memberService() {
        return new MemberService(memberRepository());
    }

    @Bean
    public MemberRepository memberRepository() {
        return new MemoryMemberRepository();
    }
}

 

 

 

의존성 주입하는 3가지 방법

1. 생성자 주입

- 요즘 권장하는 타입

- 처음에 어플리캐이션이 조립될 때 한 번 세팅되고 끝남. 

@Controller
public class MemberController {

	private final MemberService memberService;
	
    @Autowired
    public MemberControlelr(MemberService memberService) {
    	this.memberService = memberService;
    }

}

 

2. 필드 주입

- 권장하지 않음. 중간에 수정할 방법이 없어서.

@Controller
public class MemberController {

	@Autowired
    private MemberService memberService;

}

 

3. Setter 주입

- 생성은 생성대로 되고 Setter 는 나중에 호출 가능

- 세터가 퍼블릭하게 노출이 되어서 중간에 잘못바꾸면 문제가 됨..

- 아무 개발자나 호출할 수 있게 열려있음.

- 최대한 변경, 호출되지 않아야 할 메서드가 호출되면 안됨! 

@Controller
public class MemberController {

	private MemberService memberService;
	
    @Autowired
    public void setMemberService(MemberService memberService) {
    	this.memberService = memberService;
    }

}

 

 

 

저작자표시 비영리 동일조건
  1. 스프링 빈 등록하는 2가지 방법
  2. 1. 컴포넌트 스캔 + 자동 의존 관계 설정
  3. 2. 자바 코드로 직접 스프링 빈 등록
  4. 의존성 주입하는 3가지 방법
  5. 1. 생성자 주입
  6. 2. 필드 주입
  7. 3. Setter 주입
'Spring/Spring_inflearn' 카테고리의 다른 글
  • [Spring 입문] Spring DB 접근 기술 -- H2 DB
  • [Spring 입문] Form, Thymeleaf
  • [Spring 입문] member Service
  • [Spring 입문] 테스트케이스
함s
함s
개발함
함s
함함ː
함s

CALENDAR

«   2025/05   »
일 월 화 수 목 금 토
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
  • 분류 전체보기 (210)
    • TIL (6)
      • thought (2)
    • Algorithm (81)
      • Basic (66)
      • Greedy (5)
      • Implementation (3)
      • DFS BFS (7)
      • Sorting (0)
    • Front (29)
      • HTML Css (7)
      • JavaScript (17)
      • Jquery (2)
      • Vue.js (2)
      • React.js (1)
    • Node.js (5)
    • Java (43)
      • Basic (22)
      • MVC -- JSP & Servlet (18)
      • Handler (1)
      • Data (2)
    • Spring (27)
      • Spring_inflearn (9)
      • Spring Boot (7)
      • MyBatis (1)
      • Spring Data JPA (7)
      • REST API (3)
    • SQL (2)
    • Mac (13)
    • Git (4)
    • Project (0)

블로그 메뉴

  • 홈
  • 방명록
  • 글쓰기

인기 글

최근 글

hELLO · Designed By 정상우.
함s
[Spring 입문] 스프링 빈 등록, 의존성 주입
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.