백앤드/SpringBoot + Java 좋은 객체 지향 설계

[SpringBoot + Java] 좋은 객체 지향 설계(spring 의 container)

맏리믓 2023. 7. 31. 16:25

들어가며

- 앞서  Config 를 사용 했던방식이 자바 설정 class 로 Spring Container를 흉내 낸 것입니다.

- 기존 코드를 수정하여 Spring 에서 는 어떻게 사용 하는지 알아 보겠습니다.


개념

- 우선 Spring 이 어떻게 작동 되는지를 알아 보겠습니다.

 

- Container 에는 Bean 에 등록 된 객체들이 들어 가게 됩니다.

 . 따라서 Config 에 @Bean annotation 을 등록 해 준 class 가 container 에 들어가게 됩니다.

 

- 이 후 Container 를 생성 해 주면 파라미터로 넘어온 class 정보를 이용해 Bean 을 등록 한다.


사용법

- 기존의 Config class 위에 @Configuation annotation 을 달아 주어 config 임을 암시 해 줍니다.

@Configuration
public class AppConfig {
}

 

- 이 후 의존성을 주입 해 주는 메소드 들에 @Bean annotation 을 달아 줍니다.

@Configuration
public class AppConfig {

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

 

- 이 후 컨테이너에서 해당 Service 를 사용 하고 싶다면 다음과 깉이 해 주면 됩니다.

 . AnnotationConfigApplicationContext 을 통해 Config 를 생성 해 주고 이를 통해 Service 를 가져오는 방식입니다.

 public class MemberApp {
    public static void main(String[] args) {
        ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
        MemberService memberService = ac.getBean("memberService", MemberService.class);
        
        //...
        memberService.join(member);
       
    }
}