백앤드/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);
}
}