Service Repository Injection

김영한님의 “실전! 스프링 부트와 JPA 활용1” 의 내용을 참조한 것입니다.

스프링에서 Service와 Repository에 주입하는 방법

Service의 경우

필드 주입

@Service
public class MemberService {

    @Autowired
    MemberRepository memberRepository;
    ...
}

생성자 주입

@Service
public class MemberService {

    private final MemberRepository memberRepository;

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

lombok

@Service
@RequiredArgsConstructor
public class MemberService {
    
    private final MemberRepository memberRepository;
    ... 
}

Repository의 경우

import org.springframework.stereotype.Repository;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Repository
public class MemberRepository {

    @PersistenceContext
    private EntityManager em;

    ...

스프링 데이터 JPA를 사용하면 EntityManager 도 주입 가능

@Repository
@RequiredArgsConstructor
public class MemberRepository {

    private final EntityManager em;
    ... 
}