본문 바로가기

Programming/Spring

Spring boot 시작하기 - 6강(컴포넌트 스캔과 자동의존관계 설정)

반응형

1. Member Controller 만들기

controller 패키지 안에 MemberController 클래스를 생성합니다. 

그리고 아래와 같이 코딩합니다.

package hello.hellospring.controler;

import hello.hellospring.service.MemberService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

@Controller
public class MemberController {

    private final MemberService memberService;

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

2. Service등록

@Autowired로 MemberController가 MemberService를 인자로 받아들이는데 이를 위해서는 memberService가 서비스로 등록이 되어있어야 합니다. 따라서 memberService에 아래와 같이 @Service 애노테이션을 붙여줍니다. 그리고 내부에 MemberService 메서드는 @Autowired로 다시 등록합니다.

 

import hello.hellospring.domain.Member;
import hello.hellospring.repository.MemberRepository;
import hello.hellospring.repository.MemoryMemberRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Optional;

@Service
public class MemberService {

    private final MemberRepository memberRepository;

    @Autowired
    public MemberService(MemberRepository memberRepository){
        this.memberRepository = memberRepository;
    }

    /*
    회원 가입
    */

3. Repository등록

마찬가지로 @Autowired로 MemberService가 MemberRepository를 인자로 받아들이는데 해당하는 인자인 MemorymemberRepository클래스를 Repository로 등록해주어야 합니다.

package hello.hellospring.repository;

import hello.hellospring.domain.Member;
import org.springframework.stereotype.Repository;

import java.util.*;

@Repository
public class MemoryMemberRepository implements MemberRepository{

    private static Map<Long, Member> store = new HashMap<>();
    private static long sequence = 0L;

    @Override
    public Member save(Member member) {
        member.setId(++sequence);
        store.put(member.getId(), member);
        return member;
    }

 

이상 컴포넌트 스캔에 의한 자동 의존관계 설정을 마쳤습니다.

 

~~끝~~

반응형