J.Y.S
¿ whats my interest ?
J.Y.S
전체 방문자
오늘
어제
  • 분류 전체보기 (59)
    • 트러블슈팅 기록 (7)
    • Java&Kotlin (5)
    • Server (22)
    • 데이터 엔지니어링 (3)
    • Architecture& Design Patter.. (1)
    • Daily (11)
    • 알고리즘 공부 (9)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
J.Y.S

¿ whats my interest ?

[Spring] 스프링 빈, 의존성(DI) 주입
Server

[Spring] 스프링 빈, 의존성(DI) 주입

2021. 12. 7. 15:29

의존관계

Controller에서 Service를 통해 비즈니스 로직을 처리하고, Repository를 통해 데이터를 저장한다고 할 때, 서로 의존관계가 있다고 표현한다 ("Controller 가 Service를 의존한다"). Contoller 객체를 생성할 때 Service 객체도 필요하게 되는데, 이 때마다 필요한 service들을 new로 여러번 생성하는 것은 비효율적.

-> 스프링에서는 각 객체들을 컨테이너에 스프링 빈으로 등록하여 관리할 수 있음.

 

빈이란?

스프링 컨테이너가 관리하는 자바 객체이다.

Spring 시작 시 스프링 컨테이너에 스프링 빈들이 등록되어서 이후 new 로 객체를 생성하지 않고도 사용할 수 있다.

 

스프링 빈 등록 방법

  1. 컴포넌트 스캔 ( @Component )
    어노테이션 @Component을 통해 스프링 빈으로 자동 등록한다.
    • @Service @Repository 로 서비스, 리포지토리를 등록할 수도 있다.
  2. 자바 코드로 직접 스프링 빈 등록
    @Configuration 클래스에 등록할 스프링 빈( @Bean )을 설정한다.

 

컴포넌트 스캔으로 스프링 빈을 등록하는 방식이 훨씩 간단하지만, 경우에 따라 자바 코드로 직접 등록해야할 때가 있다.
ex. 데이터 저장소를 변경하려고 할 때, Repository를 다른 db repository로 바꿔야한다. 컴포넌트 스캔대신 설정 파일에 스프링 빈을 등록했다면, 새로 만든 리포지터리로 바꾸기만 하면 데이터 저장소가 변경될 수 있다.

의존성 주입

@Autowired 어노테이션을 통해 등록된 빈을 불러와 의존성을 주입할 수 있음.

저작자표시

'Server' 카테고리의 다른 글

[Spring-boot] @RequestBody, @ResponseBody : HTTP body에 데이터 송수신하기  (0) 2021.12.28
Flutter Spring-boot 연동해서 웹 페이지 만들기(to-do list)  (0) 2021.12.22
VSCode Javascript 개발 환경 (Prettier, ESLint, Typescript)  (0) 2021.10.07
[node.js] 간단 HTTP 서버 띄우기 (웹 서버 호스팅하기)  (0) 2021.10.06
JSON: javascript 객체 표기법  (0) 2021.08.06
    'Server' 카테고리의 다른 글
    • [Spring-boot] @RequestBody, @ResponseBody : HTTP body에 데이터 송수신하기
    • Flutter Spring-boot 연동해서 웹 페이지 만들기(to-do list)
    • VSCode Javascript 개발 환경 (Prettier, ESLint, Typescript)
    • [node.js] 간단 HTTP 서버 띄우기 (웹 서버 호스팅하기)
    J.Y.S
    J.Y.S

    티스토리툴바