[Java Spring 무작정 따라하기] 컴포넌트 스캔과 자동 의존관계 설정

khj·2024년 7월 29일

💡 스프링 컨테이너

Spring 서버가 실행될 때 애플리케이션의 구성 요소를 관리하고 의존성 주입을 수행하는 스프링 컨테이너라는 것이 생성된다.
특정한 어노테이션을 사용하면 스프링 컨테이너에서 객체가 생성, 관리된다.
Spring 서버의 동작 환경은 다음 그림과 같다.

✨ 컨테이너에서 관리하기

이전에 작성했던 memberService의 기능이 컨테이너에서 관리될 수 있도록 @Controller와 @Autowired 어노테이션을 사용해 컨트롤러를 작성했다.

// controller/MemberController.java
package hello.hello_spring.controller;

import hello.hello_spring.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;
    }
}

리포지토리와 서비스도 마찬가지로 컨테이너에서 관리 될 수 있도록 어노테이션을 추가했다.

// repository/MemoryMemberRepository.java
...
import org.springframework.stereotype.Repository;

@Repository
public class MemoryMemberRepository implements MemberRepository{
...
}
// service/MemberService.java
...
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class MemberService {

    private final MemberRepository memberRepository;

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

수정한 이후에 확인을 위해 서버를 실행시켜 봤다.

성공적으로 실행이 되었으므로 컨테이너가 문제없이 생성된 것을 알 수 있다.

profile
Spring, Django 개발 블로그

0개의 댓글