Spring Framework tutorial 3

문주은·2022년 11월 1일
0

1. 스프링 빈 등록하기

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

  • 컴포넌트 스캔 : Component와 관련된 annotation > @Controller, @Service, @Repository
  • 자동 의존 관계 : @Autowired를 통해 Controller와 Service 연결, Service와 Repository 연결

화면 보여주기 역할 -> Controller & View
Controller : MemberService를 통해 회원가입 및 데이터 조회 가능

spring container 에 등록해서 사용
생성자 만드는 방법 : 생성자에 + @Autorwired
@Autowired : spring이 spring container에 있는 memberService를 가져다가 연결
-> 즉, Controller랑 Service랑 연결시켜주기 위해 Autowired를 사용
-> Autowired는 Controller와 MemberService에 @Autowired annotation 입력

Controller를 통해서 외부 요청 받고, Service에서 비즈니스 로직 만들고, Repository 에서 데이터 저장

MemberController.java

@Controller
public class MemberController {
    private final MemberService memberService;

    @Autowired
    public MemberController(MemberService memberService) {
        this.memberService = memberService;
    }
}
  • Controller에 @Controller 설정
  • 연결할 Controller 생성자에 @Autowired 설정

MemberService.java

@Service
public class MemberService {

    private final MemberRepository memberRepository;

    @Autowired
    public MemberService(MemoryMemberRepository memberRepository){
        this.memberRepository = memberRepository;
    }
    ...
}
  • Service class에 @Service 설정
  • 연결할 Service 생성자에 @Autowired 설정

MemoryMemberRepository.java

@Repository
public class MemoryMemberRepository implements MemberRepository {
  ...
}

해당 실행 결과는 HelloSpringApplication에서 run

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

1) Controller는 기존에 컴포넌트 스캔방식 그대로 사용

MemberController.java

@Controller
public class MemberController {
    private final MemberService memberService;

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

2) Service와 Repository는 직접 스프링 빈에 등록

SpringConfig.java

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;

import java.lang.reflect.Member;

@Configuration
public class SpringConfig {

    @Bean
    public MemberService memberService() {
        return new MemberService(memberRepository()); // MemberService를 spring bean에 등록
    }

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

0개의 댓글