스프링 Spring/스프링 입문
[스프링 빈과 의존관계] 컴포넌트 스캔과 자동 의존관계 설정
코딩개발
2022. 1. 15. 20:04
728x90
반응형
@Controller : 스프링이 @Controller의 객체를 생성해서 들고 있다.
다른 말로 스프링 컨테이너에서 스프링 빈이 관리된다 라고 함
@Controller
public class MemberController {
// private final MemberService memberService = new MemberService();
private final MemberService memberService;
// 여러 인스턴스를 생성할 필요가 없고 하나만 만들어 공유해서 쓰면 된다.
// 스프링 컨테이너에 등록하여 사용한면 된다.
// @Autowired를 생성자에 쓰면 MemberController가 생성될때,
// 스프링 빈으로 등록되어 있는 MemberService를 넣어준다.(의존관계 주입)
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
}
결과
MemberService는 순수 자바 코드
해결 방법 : 스프링 빈 등록
1. @Service 추가
public class MemberService {
private final MemberRepository memberRepository;
// MemberService를 스프링 컨테이너에 등록하면서 이 생성자 호출,
// @Autowired가 있으면 스피링 컨테이너에 있는 MemberRepository를 넣어준다.
@Autowired
public MemberService(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
2. @Repository 추가
@Repository
public class MemoryMemberRepository implements MemberRepository {
스프링 빈 등록
Controller를 통해 외부 요청을 받고, Service 에서 비즈니스 로직을 만들고, Repository에서 데이터를 저장한다.
스프링 빈을 등록하는 2가지 방법
1. 컴포넌트 스캔과 자동 의존관계 설정
@Controller, @Service, @Repository 를 보면 안에 @Component가 있다.
스프링이 올라올때 @Component 가 있는 것은 스프링이 객체를 하나씩 다 생성하고 스프링 컨테이너에 등록을 한다.
즉, @Component가 있으면 스프링 빈으로 자동 등록된다.
@Autowired은 위 그림에서 선을(연관관계) 연결하는 역할
2. 자바 코드로 직접 스프링 빈 등록하기
인프런 강의 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술"을 정리한 것 입니다.
[무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의
스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., 스프링 학습 첫 길잡이! 개발 공부의 길을 잃지 않도록 도와드립니다. 📣 확인해주세
www.inflearn.com
728x90
반응형