방식 XML 설정 Java Config 설정 어노테이션 설정
생성자 주입 <constructor-arg ... /> new MemberDTO(..., accountGenerator()) @Autowired 생성자
Setter 주입 <property name="..."/> member.setPersonalAccount(accountGenerator()) @Autowired Setter
필드 주입 x x @Autowired 필드
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MemberDTO {
    private int sequence;
    private String name;
    private String phone;
    private String email;
    private **Account** personalAccount;
}
public interface Account {
    /* 설명. 1. 잔액 조회 */
    String getBalance();

    /* 설명. 2. 입급 */
    String deposit(int money);

    /* 설명. 3. 출금 */
    String withdraw(int money);
}
package com.haenin.common;

public class PersonalAccount implements Account{
    private final int BANK_CODE;        // 은행 코드
    private final String ACC_NO;        // 계좌 번호
    private int balance;                // 잔액

    public PersonalAccount(String ACC_NO, int BANK_CODE) {
        this.ACC_NO = ACC_NO;
        this.BANK_CODE = BANK_CODE;
    }

 ...

1. DI란?

⇒ 이걸 통해 객체 간 결합도를 낮추고, 유지보수성을 좋게한다.

스크린샷 2025-09-07 오후 12.37.31.png

spring-context.xml

<bean id="**account**" class="com.haenin.common.PersonalAccount">
    <constructor-arg index="0" value="110-234-4567890"/>
    <constructor-arg index="1" value="20"/>
</bean>
<!--     1. 생성자 주입-->
    <bean id="**member**" class="com.haenin.common.MemberDTO">
        <constructor-arg name="sequence" value = "1"/>
        <constructor-arg name="name" value = "홍길동"/>
        <constructor-arg name="phone" value = "010-123-1234"/>
        <constructor-arg name="email" value = "[email protected]"/>
        <constructor-arg name="personalAccount" ref="account"/>
    </bean>
    
<!-- Setter 주입 -->
<bean id="**member**" class="com.haenin.common.MemberDTO">
    <property name="sequence" value="1"/>
    <property name="name" value="홍길동"/>
    <property name="phone" value="010-123-1234"/>
    <property name="email" value="[email protected]"/>
    <property name="personalAccount" ref="account"/>
</bean>

Application.java

ApplicationContext context =
        new GenericXmlApplicationContext(
        "section01/xmlconfig/spring-context.xml");

MemberDTO member = context.getBean(MemberDTO.class);
System.out.println("member = " + member);