Application Context 작성하기
지시서(DI)를 읽어와서 그 지시대로 객체를 만들고, 그 만들어진 객체를 활용해야한다.
이 때 주체를 생성해주고, 조립해주는 인터페이스가 ApplicationContext이다.
ApplicationContext을 작성한 이후에는 ApplicationContext 코드의 수정 없이 지시서(xml)만 수정하면 되도록하는 것이 목표이다.
ApplicationContext 종류
지시서를 넘길 때지 지시서의 위치를 어떻게 표현하느냐에 따라 나뉜다.
위의 세 가지는 xml Configuration이며, 네 번째는 java Configuration이다.
- ClassPathXml: Application의 root으로부터 경로 설정(실행 될 때의 위치) / 가장 보편적
- FileSystemXml: C드라이브부터 경로 설정
- XmlWebApplicationContext: 웹의 URL을 통해 지정
- AnnotationConfig: 파일로 두는 것이 아니라 Annotation으로 두고 스캔하는 방법으로 사용
ApplicationContext 선언하기
IoC 의 이름이 ApplicationContext이다.
ApplicationContext context = new ClassPathXmlApplicationContext("config.xml");
Application의 root 이므로 src 폴더를 의미한다. 그러므로 package이름까지 넣어주어야 한다.
ApplicationContext 를 이용하여 ExamConsole 객체 불러오기
1.id로 가져오는 경우: "id"
어떤 객체인지 알 수 없기 때문에 캐스팅이 요구된다.
ExamConsole console = (ExamConsole) context.getBean("console");
console.print();
2. 클래스로 가져오는 경우: 클래스이름.class
캐스팅을 하지 않아도 되기 때문에 더 선호되는 방법이다.
ExamConsole console = context.getBean(ExamConsole.class);
console.print();
EX01. 컬렉션 사용하기
XML 파일에 정의되어 있던 exams 빈을 Context 파일에서 사용한다.
<XML파일에서 정의된 exams>
<bean id="exams" class="java.util.ArrayList">
<constructor-arg>
<bean class="spring.di.entity.NewlecExam" p:kor="10" p:eng="30" p:com="50"/>
<ref bean="exam"/>
</constructor-arg>
</bean>
<Context 파일에서 사용하기>
List<Exam> exams = context.getBean("exams");
//= List<Exam> exams = new ArrayList<>(); 원래 같았다면 이렇게 사용했을 것
exams.add(new NewlecExam(10, 30, 50));
for(Exam e : exams)
System.out.println(e);
'BackEnd > Spring' 카테고리의 다른 글
[Spring] @Autowired의 역할 (0) | 2021.08.30 |
---|---|
[Spring] 이클립스에 Maven Repository 라이브러리 가져오기 (0) | 2021.08.28 |
[Spring] Spring DI 지시서 작성하기 (Spring Bean Configuration) (0) | 2021.08.26 |
[Spring] IoC 컨테이너 (0) | 2021.08.26 |
[Spring] Dependency Injection(DI) (0) | 2021.08.26 |
댓글