티스토리 뷰

Web

Ch03. DI 방식, Singleton

tose33 2022. 6. 23. 17:15

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 프로그래밍 입문 (최범균 저)

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
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
글 보관함