Spring 기초 - DI란? (dependency injection / 의존성 주입)

Hailey·2025년 3월 2일

SPRING

목록 보기
3/15

1. Dependency - Injection 의존성 주입(생성자,세터)

1) DI(Dependency Injection/의존성 주입)이란?

Bean에 Bean을 넣는 것!

객체 간의 의존 관계빈 설정 정보를 바탕으로 컨테이너가 자동적으로 연결해주는 것을 말한다. 이를 통해 객체 간의 결합도를 낮출 수 있으며 이로 인해 유지보수성과 유연성이 증가한다.

그냥 java에서는 객체를 생성할 때 굳이 필드나 생성자가 없어도 객체를 생성할 수 있다! 그러나 Spring이 Bean을 생성할 때,
"객체 생성" + "의존성 주입(DI)" 을 함께 처리해야 합니다.

그래서, Spring에서 생성자 vs 필드 vs Setter 중 선택하여 주입하면 된다.

2) xml으로 주입시키는 방법

<!--    1. 생성자 주입-->
<!--    <bean id="member" class="com.ohgiraffers.common.MemberDTO">-->
<!--        <constructor-arg name="sequence" value="1"/>-->
<!--        <constructor-arg name="name" value="홍길동"/>-->
<!--        <constructor-arg name="email" value="hong@gmail.com"/>-->
<!--        <constructor-arg name="phone" value="010-1234-5678"/>-->
<!--        <constructor-arg name="personalAccount" ref="account"/>-->
<!--    </bean>-->

3) annotation 안에서 주입시키기

@Configuration
public class ContextConfiguration {

    @Bean
    public Account accountGenerator() {
        return new PersonalAccount(20, "110-234-4567890");
    }

    @Bean
    public MemberDTO memberGenerator() {

        /* 설명. setter 주입 */
//        MemberDTO member = new MemberDTO();
//        member.setSequence(1);
//        member.setName("홍길동");
//        member.setPhone("010-234-5678");
//        member.setEmail("hong@gmail.com");
//        member.setPersonalAccount(accountGenerator());
//
//        return member;

        /* 설명. 생성자 주입 */
        return new MemberDTO(1, "홍길동", "010-234-5678",
                "hong@gmail.com", accountGenerator());
    }
}

this

참고) this는 나중에 이 해당 메소드를 부르는 PersonalAccount타입의 객체를 의미한다.

public class PersonalAccount  implements Account{

private final int bankCode;
private final String accNo;
private int balance;

public String getBalance(){
	return this.accNo + "계좌의 현재 잔액은" + this.balance + "원입니다."
}

}
profile
럭키헤일리

0개의 댓글