DEVELOPMENT/Spring

4. 스프링 빈과 의존관계

Tiny Commit 2025. 5. 12. 01:07
  • 멤버 서비스와 리포지토리 만들고 멤버 객체 만들고 서비스를 통해 멤버를 타입할 수 있고, 리포지토리에 저장되고 리포지토리에서 꺼내올 수 있는 로직으 만들고 test를 만들고
  • 화면에 붙이고 싶다 -> 컨트롤러랑 뷰 템플릿이 필요하다.  
    • 멤버 컨트롤러를 만들어야 한다. 이 멤버 컨트롤러가 멤버 서비스를 통해서 회원가입, 데이터 조회 할 수 있도록
    • 컨트롤러가 멤버 서비스를 의존한다. 

 

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

 

 

1. 멤버 컨트롤러를 만든다. 

package hello.hello_spring.controller;


import org.springframework.stereotype.Controller;

@Controller
public class MemberController {
    
}
  • 컨테이너라는 스프링 통이 생긴다. 
  • MemberController 객체를 생성해서 스프링에 넣어두고 관리합니다. 
  • 스프링이 관리를 하면 컨테이너에 등록을 하고 컨테이너에서 받아서 쓰도록 바꿔야 한다.

 

 

 

// xxxxxxx private final MemberService memberService = new MemberService();
    private final MemberService memberService;

    @Autowired
    public MemberController(MemberService memberService) {
        this.memberService = memberService;
    }

 

 

@Autowired

  • 스프링 컨테이너에 있는 멤버 서비스를 가져다가 연결을 시켜준다.

 

2.  이때 오류 발생

  • 오류가 뜬다: 순수한 자바파일이여서 스프링이 판단할 수 없기 때문에

 

 

 

 

  • @Service /@Repository를 자바 코드에 넣어준다. 그러면 컨트롤러 서비스 리포지토리를 쫙 가져온다. 
    • 컨트롤러로 외부 요청을 바도, 서비스에서 비지니스 로직을 만들고 리포지토리에서 데이터를 저장한다. 

 

 

3.  회원 리포지토리 스프링 빈 등록

 

  • 컨트롤러와 서비스를 연결시켜줘야 한다: @AutoWired
    • 멤버 컨트롤러가 생성 될 때 스프링빈에 등록되어 있는 멤버 서비스를 객체에 가져다 넣어준다. (Dependency Injection)

 

 

 

 

 

 

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

  • 컴포넌트 스캔과 자동 의존 관계 설정: @
    • 스프링이 올라올때 컴포넌트와 관련된 애노테이션이 있으면 스프링 객체를 하나씩 생성해서 스프링 컨테이너에 등록을 하고 오토 와이어드는 연관관계 선을 연결해 줍니다. 그래서 멤버 컨트롤러가 멤버 서비스를 쓸 수 있게 해주고 오토 와이어드로 멤버 서비스가 멤버 리포지토리를 쓸 수 있게 되는 거다, 

 

  • 자바 코드로 직접 스프링 빈 등록하기: 직접 등록

 

 

 

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

  • "SpringConfig" class파일 만들기
package hello.hello_spring;

import hello.hello_spring.service.MemberService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import hello.hello_spring.repository.MemberRepository;
import hello.hello_spring.repository.MemoryMemberRepository;

@Configuration
public class SpringConfig {

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

}

 

  • 멤버 서비스와 멤버 리포지토리를 스프링 빈에 등록하고 등록된 멤버 리포지토리를 멤버 서브스에 넣어준다. 

 

 


출처 :  김영한, 『스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술』, 인프런 강의.

 

 

 

 

 

 

 

'DEVELOPMENT > Spring' 카테고리의 다른 글

6. 스프링 DB 접근 기술1  (0) 2025.05.25
5. 회원 관리 예쩨 - 웹 MVC 개발  (0) 2025.05.12
3. 회원 관리 예제 - 백엔드 개발  (0) 2025.05.12
2. 스프링 웹 개발 기초  (0) 2025.04.07
1. 프로젝트 환경설정  (0) 2025.04.01