728x90
반응형
이번에는 스프링 프레임워크에서 생성자 주입을 활용한 의존성 주입에 대해 알아보겠습니다.
생성자 주입은 스프링의 강력한 기능 중 하나로, 객체 간의 의존성을 외부에서 주입하는 방식을 제공합니다.
1. 생성자 주입이란?
생성자 주입은 객체를 생성할 때 외부에서 의존하는 객체를 주입하는 방식입니다. 이는 객체 간의 결합도를 낮추고 코드의 유연성을 높이는 데에 큰 도움이 됩니다.
public class MemberRegisterService {
private MemberDao memberDao;
// 생성자를 통해 의존 객체 주입
public MemberRegisterService(MemberDao memberDao) {
this.memberDao = memberDao;
}
// ... 이하 생략
}
2. 스프링 자바 설정에서의 활용
스프링에서는 자바 클래스에서 '@Bean' 어노테이션을 사용하여 의존성을 주입할 객체를 등록합니다. 이때 생성자가 여러 개인 경우에도 동일한 방식으로 주입합니다.
@Configuration
public class AppConfig {
@Bean
public MemberDao memberDao() {
return new MemberDao();
}
@Bean
public MemberPrinter memberPrinter() {
return new MemberPrinter();
}
@Bean
public MemberListPrinter listPrinter() {
return new MemberListPrinter(memberDao(), memberPrinter());
}
}
3. 의존성 객체 두 개 이상인 경우
생성자에 전달하는 의존객체가 두 개 이상이어도 마찬가지로 동일한 방식으로 주입할 수 있습니다.
public class MemberListPrinter {
private MemberDao memberDao;
private MemberPrinter printer;
// 생성자 주입
public MemberListPrinter(MemberDao memberDao, MemberPrinter printer) {
this.memberDao = memberDao;
this.printer = printer;
}
// ... 이하 생략
}
4. 메인 클래스에서의 활용
메인 클래스에서는 'ApplicationContext' 를 통해 빈을 가져와서 생성자 주입을 활용한 의존성 주입을 확인할 수 있습니다.
public class Main {
private static ApplicationContext ctx = null;
// ... 이하 생략
private static void processListCommand() {
MemberListPrinter listPrinter = ctx.getBean("listPrinter", MemberListPrinter.class);
listPrinter.printAll();
}
// ... 이하 생략
}
728x90
반응형
'Spring' 카테고리의 다른 글
[Spring] @Autowired - 의존성 자동주입 (0) | 2024.01.24 |
---|---|
[Spring] 의존성 주입 - 세터 주입, 생성자 주입방식과 비교 (0) | 2024.01.23 |
[Spring] 빈 생명주기 콜백 (0) | 2023.02.14 |
[Spring] 웹 스코프와 프록시 객체 (0) | 2023.02.14 |
[Spring] 프로토타입과 싱글톤 빈 함께 사용 시 문제점 (0) | 2023.02.13 |