공부/Spring - 김영한

[ spring ] 스프링 빈과 의존관계, 예제 - 회원관리 : 의존관계 설정

haena02 2023. 1. 19. 20:27
반응형

스프링 빈을 동록하고, 의존관계 설정하기

 

리포지토리랑 서비스를 다 만들고 화면을 붙이고 싶다면 컨트롤러와 뷰 템플릿이 필요하다.

멤버 컨트롤러를 만들게 되면 이 컨트롤러는 멤버서비스를 통해서 회원가입하고 데이터를 조회할 수 있어야한다.

이 경우에 멤버 컨트롤러가 멤버 서비스를 의존한다고 표현한다. 

 

스프링이 뜰 때 컨트롤러의 객체를 생성해서 스프링이 가지고있다.

이를 스프링 빈을 관리한다고 표현한다. 

 

스프링은 스프링 컨테이너에 스프링 빈을 등록할 때, 유일하나 하나만 등록해서 공유한다.(싱글톤)

같은 스프링빈이면 모두 같은 인스턴스이다.

 

1 컨포넌트 스캔방식

스프링이 서비스, 리포지토리, 컨트롤러 들을 관리 할 수 있으려면 각각 @Service, @Repository, @Controller 를 명시 해줘야한다. 이것을 스프링 빈으로 등록하는 과정이라고 할 수 있다. 

그 대신 @Coponent를 해도되는데 @Service, @Repository, @Controller  안에는 @Coponent가 다 포함되어있다. 

그 후 @Autowired 로 지동으로 의존관계가 설정되도록 한다.  

 

main이 있는 폴더가 아니라면 스캔이 안되기 때문에 main이 있는 폴더 안에 있는것들만 유효하다!

 

2 자바 코드로 직접하는 방식

 

@Configuration이 들어간 Config파일을 만든다.

추가하고싶은 스프링 빈을 @bean을 통해 추가해준다.

 

package hello.hellospring.service;

import hello.hellospring.repository.MemberRepository;
import hello.hellospring.repository.MemoryMemberRepository;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SpringConfig {

    @Bean
    public MemberService memberService(){
        return new MemberService(memberRepository());
    }
    
    @Bean
    public MemberRepository memberRepository(){
        return new MemoryMemberRepository();
    }
}

 

 

 

 

반응형