티스토리 뷰
1. 생성자 방식
의존하는 객체를 생성자로 주입하는 방식.
public class MemberRegisterService
{
private MemberDao memberDao;
public MemberRegisterService(MemberDao memberDao)
{
this.memberDao = memberDao;
}
}
장점 : 빈 객체를 생성하는 시점에 모든 의존 객체가 주입된다.
단점 : 생성자의 파라미터 개수가 많을 경우 각 인자가 어떤 의존 객체를 설정하는지 알아내려면 코드를 확인해야 한다.
2. Setter 방식
의존하는 객체를 Setter 메소드로 주입하는 방식.
package spring;
public class MemberInfoPrinter
{
private MemberDao memberDao;
private MemberPrinter printer;
public void setMemberDao(MemberDao memberDao)
{
this.memberDao = memberDao;
}
public void setPrinter(MemberPrinter printer)
{
this.printer = printer;
}
}
장점 : 세터 메서드 이름을 통해 어떤 의존 객체가 주입되는지 알 수 있다.
단점 : 세터 메서드로 의존 객체를 주입하기 전에 해당 객체를 사용할수 있다. 이때 NullPointerException 발생.
스프링 컨테이너가 생성한 빈은 싱글톤 객체
이전 챕터2 에서도 나왔지만, 스프링 컨테이너가 생성한 빈은 싱글톤 객체이다.
즉 ctx.getBean() 으로 몇번을 호출하더라도 동일한 객체가 리턴된다는 것이다.
스프링은 설정 클래스 (@Configuration이 붙은 클래스)를 그대로 사용하지 않고, 설정 클래스를 상속한 새로운 설정 클래스를 만들어 사용하고, 해당 클래스에서 사용하려는 객체가 존재하는지 판단후 존재한다면 해당 객체를 리턴, 없다면 새로만들어 리턴한다.
출처: 스프링5 프로그래밍 입문 (최범균 저)
'Web' 카테고리의 다른 글
Ch04. 자동 주입, @Autowired, @Qualifer (0) | 2022.06.23 |
---|---|
Ch03. 두 개 이상의 설정파일 사용, @AutoWired, @Import (0) | 2022.06.23 |
Ch03. Spring Container, ApplicationContext 설정 파일 (0) | 2022.06.01 |
Ch03. Dependency Injection (의존 주입) (0) | 2022.05.30 |
Ch02. 간단한 스프링 예제, 빈 객체 (0) | 2022.05.30 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Brute Force
- two pointer
- Implementation
- Dijkstra
- Stack
- priority queue
- Python
- binary search
- dfs
- C++
- Unity
- DP
- Tree
- permutation
- 이분탐색
- CSS
- graph
- MVC
- greedy
- floyd warshall
- 재귀
- recursion
- back tracking
- C
- db
- 자료구조
- 조합
- BFS
- Spring
- Kruskal
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함