ApplicationContext context = new GenericXmlApplicationContext("section01/xmlconfig/spring-context.xml");
GenericXmlApplicationContext를 사용하여 spring-context.xml 파일을 로드합니다. 이 XML 파일에는 스프링 빈 설정 정보가 들어 있으며, 빈 객체가 생성되고 스프링 컨테이너에서 관리됩니다.
//1.bean 의 id를 가지고 컨테이너에서 추출
MemberDTO member = (MemberDTO)context.getBean("member");
//2.bean타입을 전달하여 추출
MemberDTO member = context.getBean(MemberDTO.class);
//3. bean의 id와 클래스의 메타 정보를 전달하여 추출
MemberDTO member = context.getBean("member",MemberDTO.class);


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- MemberDTO bean 등록 -->
<bean id="member" class="com.ohgiraffers.common.MemberDTO">
<constructor-arg index="0" value="1"/>
<constructor-arg name="id" value="user01"/>
<constructor-arg index="2"><value>pass01</value></constructor-arg>
<constructor-arg name="name"><value>홍길동</value></constructor-arg>
</bean>
</beans>
이 XML 파일은 Spring의 빈(Bean) 설정 파일로, MemberDTO 객체를 스프링 컨테이너에서 관리하도록 설정하는 역할을 합니다.
- Spring 컨테이너(ApplicationContext)가 spring-context.xml을 로드.
- PersonalAccount 객체가 먼저 생성되고 account 빈으로 등록됨.
- MemberDTO 객체가 생성된 후, 세터(setter) 방식으로 데이터가 주입됨.
- Application.java에서 context.getBean(MemberDTO.class)를 호출하면, 위에서 설정한 member 빈이 반환됨.

@Configuration("config1")
public class ContextConfiguration {
@Bean("member")
public MemberDTO getMember() {
return new MemberDTO(1, "user01", "pass01", "홍길동");
}
}
@Configuration: 이 클래스가 Spring의 설정 클래스임을 나타냅니다.
기존의 spring-context.xml을 Java 코드로 대체할 때 사용.
@Bean("member"): getMember() 메서드가 반환하는 객체를 Spring 빈(Bean)으로 등록.
"member"라는 이름으로 빈이 생성됨.
getMember() 메서드: MemberDTO 객체를 직접 생성하여 반환. Bean이름이 등록되지 않으면 메서드이름이 빈의 이름이 된다.
범위를 bean으로 등록하는 방법을 다룬다.
/ 설명. 1. 기본적으로는 설정파일이 있는 패키지 및 하위만 Scan하지만 basePackages를 바꾸면 다른 범위까지 가능하다. /
@Configuration
@ComponentScan(basePackages = "com.ohgiraffers")
설명. 2. 범위 및 필터를 적용해서 제외하고자 하는 bean을 등록하는 경우(excludeFilters)

/ 설명. 3. 범위 및 필터를 적용해서 등록하고자 하는 bean을 등록하는 경우(includeFilters) /
@ComponentScan(basePackages = {"com.ohgiraffers", "com"},
useDefaultFilters = false, // 현재 설정 파일 bean 제외 나머지는 off
includeFilters = {
@ComponentScan.Filter(
type=FilterType.ASSIGNABLE_TYPE,
classes = {MemberDAO.class} // MemberDAO 타입 bean만 등록
)
})