일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- param
- 웹개발자
- 스프링
- 그레이들
- DB
- jsp
- 2021년
- sql
- spring
- 1회
- 실기
- forTokens
- el표기법
- 개발자
- forward
- servlet
- map
- 리액트
- Oracle
- c:out
- IT
- 프로젝트
- Java
- List
- set
- 정보처리기사
- JSTL
- sendRedirect
- 프레임워크
- MVC
- Today
- Total
룽쓰의 개발도구
Spring 컨테이너란? 본문
지금부터 본격적으로 Spring에 대해서 알아볼 예정이다.
나도 공부 중에 있기 때문에 다소 난해한 단어, 정립되지 않은 설명이 적힐 수 있다.
#1. 컨테이너란 무엇인가?
우리가 흔히 알고 있는 컨테이너는 사진과 같이 '뭔가를 담을 수 있는 공간'이다. 스프링도 비슷하다.
예를 들어, 이클립스에서 사용자들의 요청을 /hello.do로 보냈을 때 어떻게 그 주소 값을 받아왔었나?
방법 1) hello.do 파일을 만들어서 그곳에서 직접 값을 받기
방법 2) web.xml에 servlet mapping을 통해서 hello.HelloServlet으로 이동하라고 설정하기
크게 보면 이렇게 두 방법이 있다.
스프링에서 컨테이너의 역할은 위 방법 중 2번의 방법과 같다.
컨테이너란?
미리 값을 설정해둘 수 있는 환경설정과 같은 곳.
[ A. Container.xml ]
<beans>
<bean id="tv" class="polymorphism.SamsungTV"/>
</beans>
컨테이너라고 불리는 xml을 보면 이해하기 쉽다.
<bean>은 객체를 만들 때 사용하는 것이다. id를 내가 불러올 이름을 마음대로 적으면 되고, class는 그 객체가 위치한 곳을 적어주면 된다. 즉, polymorphism패키지 안에 있는 SamsungTV라는 클래스를 나는 객체로 만들어야!라는 말이다.
[ B. TVUser ]
package org.zerock.polymorphism;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class TVUser {
public static void main(String[] args) {
AbstractApplicationContext factory = new GenericXmlApplicationContext("Container.xml");
TV tv = (TV) factory.getBean("tv");
tv.powerOn();
tv.volumeDown();
tv.volumeUp();
tv.powerOff();
}
}
다른 것 없이 바로 메인 메서드가 있는 클래스를 보면 답을 낼 수 있다.
메인 메서드의 첫 줄에 있는 코드는 Container.xml에 있는 것들을 읽어오겠다는 뜻이다.
그 Container.xml에는 <bean> 객체로 tv를 만들어 뒀기 때문에, TV tv = (TV) factory.getBean("tv");가 성립될 수 있다.
SamsungTV는 TV 인터페이스를 구현한 클래스로 다형성을 사용하기 위해서 TV로 받았고, getBean으로 넘어오는 객체는 Object 타입이라서 강제 형 변환을 통해서 TV객체의 타입으로 변환해줬다.
그리고 tv를 통해서 안에 있던 메서드들을 실행했다.
그 안에 있는 것들은 SamsungTV에서 정의했던 값들이 출력되게 된다.
'개발 용어 > Spring' 카테고리의 다른 글
Spring에서 List란? (0) | 2021.04.30 |
---|---|
Property와 Constructor는 무엇일까? (0) | 2021.04.29 |
스프링 AbstractApplicationContext란? (0) | 2021.04.29 |
Spring 컨테이너 예시를 알아보자 (0) | 2021.04.29 |
Spring 프레임워크란 무엇인가? (0) | 2021.04.28 |