맛동산

Simple Spring Maven에서 스프링 컨테이너 사용-1 본문

Web/Spring

Simple Spring Maven에서 스프링 컨테이너 사용-1

오지고지리고알파고포켓몬고 2017. 3. 12. 14:05


Simple Spring Maven 프로젝트에서 정적인 파일(설정파일 등)은 src/main/resources에서 관리하도록 함, 

자바 코드는 src/main/java에 생성


src/main/resources에 스프링 컨테이너로 사용할 xml파일을 생성 후 내용을 작성하고 class에서 불러오는 식으로 사용하게 됨


우선 간단한 예를 들어

1
2
3
4
5
6
7
8
9
10
11
12
13
<span·style="color:·rgb(53,·53,·53);">·¬
<?xml·version="1.0"·encoding="UTF-8"?>¬
<!--····-->¬
<beans·xmlns="http://www.springframework.org/schema/beans"¬
————xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"¬
————xmlns:p="http://www.springframework.org/schema/p"¬
————xsi:schemaLocation="http://www.springframework.org/schema/beans·http://www.springframework.org/schema/beans/spring-beans.xsd">¬
¬
————<!--·spring.di.ch01·-->¬
————<bean·id="message"·class="spring.di.ch01.MessageKr"/>·¬
————¬
</beans>¬
</span>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

- applicationContext.xml


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
<span·style="color:·rgb(53,·53,·53);">·¬
package·spring.di.ch01;¬
¬
import·org.springframework.context.support.AbstractApplicationContext;¬
import·org.springframework.context.support.ClassPathXmlApplicationContext;¬
¬
public·class·Main·{¬
¬
————public·static·void·main(String[]·args)·{¬
————————/*·(xml)···(DI)·*/¬
¬
————————//·1.·····¬
————————AbstractApplicationContext·context·=¬
————————new·ClassPathXmlApplicationContext("applicationContext.xml");¬
————————//·2.·JVM···ApplicationContext··¬
————————context.registerShutdownHook();¬
————————//·3.···()·.¬
————————MessageKr·message·=·(MessageKr)context.getBean("message");¬
————————//·4.····¬
————————message.sayHello("");¬
————————//·5.······()·¬
————————context.close();¬
————}¬
¬
}¬
</span>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

- spring.di.ch01.Main.java


1
2
3
4
5
6
7
8
9
10
11
12
<span·style="color:·rgb(53,·53,·53);">·¬
package·spring.di.ch01;¬
¬
public·class·MessageKr·{¬
————public·MessageKr(){¬
————————System.out.println("");¬
————}¬
————public·void·sayHello(String·name){¬
————————System.out.println(",·"+name+"");¬
————}¬
}¬
</span>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

- spring.di.ch01.Message.java


과 같은 파일들이 있을 때, Main을 실행하게 되면

AbstractApplicationContext context =

new ClassPathXmlApplicationContext("applicationContext.xml");

이 명령을 실행하며 applicationContext.xml에 작성된 행위를 하게됨(생성자의 메세지로 확인)



applicationContext을 보면<bean id="message" class="spring.di.ch01.MessageKr"/>라는 줄이 있는데 message라는 id로 spring.di.ch01.MessageKr의 객체를 생성하겠다는 뜻임



다시 Main으로 돌아와서 MessageKr message = (MessageKr)context.getBean("message"); 코드를 보면 message변수에 스프링 컨테이너에서 생성된 객체를 id를 통해 호출하여 넣어주는 행위를 하는 것 을 볼 수 있음(주입한다 라고 함)



이렇게 MessageKr 객체가 주입된 message는 기존방법처럼 함수를 호출할 수있게 됨



-> 스프링 프레임워크는 위와 같이 스프링이 객체를 관리하고, 필요할 때 주입하여 사용하는 패턴을 갖는데, 처음엔 객체 생성하는데 왜 굳이 파일 하나 더 만드는 고생을 해야하나 싶었는데 이것의 장점은 web프로젝트를 할 때 깨달을 수 있음.

Comments