๐ขSpring Container์ ์ข์์
1. Factory ํด๋์ค๋ฅผ ์๋ง๋ค์ด๋๋
2. ํด๋์ค ์์ ์ xml ํ์ผ๋ง ์์
โป src/main/java ํด๋์ xyz.itwill03.spring ํจํค์ง ์์ฑ
๐MessageObject.java(์ธํฐํ์ด์ค)
โป xyz.itwill03.spring ํจํค์ง์ MessageObject.java ์ธํฐํ์ด์ค ์์ฑ
package xyz.itwill03.spring; // public interface MessageObject { String getMessage(); }
๐HelloMessageObject.java(ํด๋์ค)
โป xyz.itwill03.spring ํจํค์ง์ HelloMessageObject.java ํด๋์ค ์์ฑ
package xyz.itwill03.spring; // public class HelloMessageObject implements MessageObject { @Override public String getMessage() { // TODO Auto-generated method stub return "Hello!!!"; } }
๐MessagePrint.java(ํด๋์ค)
โป xyz.itwill03.spring ํจํค์ง์ MessagePrint.java ํด๋์ค ์์ฑ
package xyz.itwill03.spring; // public class MessagePrint { //MessageObject ์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ์ ์์ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ํ๋ //โ ํ๋์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํด์ผ๋ง ํฌํจ๊ด๊ณ ์ฑ๋ฆฝ - ํฌํจ๊ด๊ณ์ ํด๋์ค ๋ฉ์๋ ํธ์ถ ๊ฐ๋ฅ private MessageObject object; //get,set ๋ฉ์๋ ํธ์ถ public MessageObject getObject() { return object; } public void setObject(MessageObject object) { this.object = object; } // public void messagePrint() { String message=object.getMessage(); System.out.println("message = "+message); } }
1. src/main/resources ์ค๋ฅธ์ชฝ ํด๋ฆญ โ New โ Spring Bean confuguration File ํด๋ฆญ
2. File Name ์์ฑ โ Next
3. ์ฒดํฌํญ๋ชฉ ํ์ธ โ Finish
๐ข์คํ๋ง ์ปจํ ์ด๋๋ ํ๊ฒฝ์ค์ ํ์ผ(Spring Bean Configuration File - XML)๋ก๋ถํฐ ํด๋์ค๋ฅผ ์ ๊ณต๋ฐ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ๊ด๋ฆฌ
โ Spring Bean : ์คํ๋ง ์ปจํ ์ด๋์ ์ํด ๊ด๋ฆฌ๋๋ ๊ฐ์ฒด(ํด๋์ค)
โ ์คํ๋ง ์ปจํ ์ด๋๋ ๋ฆฌํ๋ ์ (Reflection) ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ์์ฑ๐ขbean ์๋ฆฌ๋จผํธ๋ฅผ ์ฌ์ฉํ์ฌ ์คํ๋ง ์ปจํ ์ด๋์๊ฒ Spring Bean์ผ๋ก ์ฌ์ฉ๋ ํด๋์ค ์ ๊ณต
<bean class="xyz.itwill03.spring.HelloMessageObject" id="helloMessageObject"/>๐ขbean ์๋ฆฌ๋จผํธ์ ํ์ ์๋ฆฌ๋จผํธ๋ฅผ ์ฌ์ฉํ์ฌ Spring Bean์ ๋ํ ํฌํจ๊ด๊ณ ์ค์ - ์์กด์ฑ ์ฃผ์
<bean class="xyz.itwill03.spring.MessagePrint" id="messagePrint"> <property name="object" ref="helloMessageObject"/><!-- object์ helloMessageObject๋ฅผ ์ ์ฅ --> </bean>๐03_message.xml
<?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"> <!-- ์คํ๋ง ์ปจํ ์ด๋๋ ํ๊ฒฝ์ค์ ํ์ผ(Spring Bean Configuration File - XML)๋ก๋ถํฐ ํด๋์ค๋ฅผ ์ ๊ณต๋ฐ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ๊ด๋ฆฌ --> <!-- โ Spring Bean : ์คํ๋ง ์ปจํ ์ด๋์ ์ํด ๊ด๋ฆฌ๋๋ ๊ฐ์ฒด(ํด๋์ค) --> <!-- โ ์คํ๋ง ์ปจํ ์ด๋๋ ๋ฆฌํ๋ ์ (Reflection) ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ์์ฑ --> <!-- bean ์๋ฆฌ๋จผํธ๋ฅผ ์ฌ์ฉํ์ฌ ์คํ๋ง ์ปจํ ์ด๋์๊ฒ Spring Bean์ผ๋ก ์ฌ์ฉ๋ ํด๋์ค ์ ๊ณต --> <bean class="xyz.itwill03.spring.HelloMessageObject" id="helloMessageObject"/> <bean class="xyz.itwill03.spring.HiMessageObject" id="hiMessageObject"/><!-- hi!!! ๋ฉ์ธ์ง๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํด ์์ฑ --> <!-- ================================================================================ --> <!-- bean ์๋ฆฌ๋จผํธ์ ํ์ ์๋ฆฌ๋จผํธ๋ฅผ ์ฌ์ฉํ์ฌ Spring Bean์ ๋ํ ํฌํจ๊ด๊ณ ์ค์ - ์์กด์ฑ ์ฃผ์ --> <bean class="xyz.itwill03.spring.MessagePrint" id="messagePrint"> <!-- <property name="object" ref="helloMessageObject"/>--><!-- object์ helloMessageObject๋ฅผ ์ ์ฅ --> <property name="object" ref="hiMessageObject"/> </bean> </beans>
๐MessagePrintApp.java(ํด๋์ค)
โป xyz.itwill03.spring ํจํค์ง์ MessagePrintApp.java ํด๋์ค ์์ฑ
package xyz.itwill03.spring; // import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; // //์คํ๋ง ์ปจํ ์ด๋(Spring Container)๋ฅผ ์ด์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ์ ๊ณต๋ฐ์ ์ฌ์ฉ //โ Spring Container : Spring Framework์์ ํ๋ก๊ทธ๋จ ์์ฑ์ ํ์ํ ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํ๋ ์ปดํผ๋ํธ //โ ํ๋ก๊ทธ๋๋จธ๊ฐ ์๋ ์คํ๋ง ์ปจํ ์ด๋๋ฅผ ์ด์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌ - Spring Ioc //โ ์คํ๋ง ์ปจํ ์ด๋๋ ํ๊ฒฝ์ค์ ํ์ผ(Spring Bean Configuration File - XML)์ ์ด์ฉํ์ฌ ๊ฐ์ฒด์ ์๋ช ์ฃผ๊ธฐ(LifeCycle) ๊ด๋ฆฌ ๋ฐ ๊ฐ์ฒด๊ฐ์ ๊ด๊ณ ์ค์ public class MessagePrintApp { public static void main(String[] args) { //Spring Container ์ฌ์ฉ X /* HelloMessageObject object=new HelloMessageObject(); MessagePrint print=new MessagePrint(); print.setObject(object);//ํฌํจ๊ด๊ณ ์ฑ๋ฆฝ - ํ๋์ MessagePrint ๊ฐ์ฒด ์ ์ฅ print.messagePrint(); */ //================================================================================ //Spring Container ์ฌ์ฉ O //ApplicationContext ๊ฐ์ฒด(์คํ๋ง ์ปจํ ์ด๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๊ฐ์ฒด) ์์ฑ //โ Spring Bean Configuration File์ ์ ๊ณต๋ฐ์ Spring Bean์ ์์ฑํ์ฌ ๊ด๋ฆฌ ApplicationContext context=new ClassPathXmlApplicationContext("03_message.xml"); // //์คํ๋ง ์ปจํ ์ด๋๋ก๋ถํฐ ํ์ํ Spring Bean์ ์ ๊ณต๋ฐ์ ์ ์ฅ //โ Spring Bean์ ๊ตฌ๋ถํ๊ธฐ ์ํ ์๋ณ์(beanName ๋๋ beanId)๋ฅผ ์ ๋ฌ MessagePrint print=(MessagePrint)context.getBean("messagePrint"); // print.messagePrint(); // //์คํ๋ง ์ปจํ ์ด๋ ์ ๊ฑฐ ((ClassPathXmlApplicationContext)context).close(); } }
๐ขHi!!!์ ์ถ๋ ฅํ๊ธฐ ์ํด ์์ ์ฝ๋ ์์
1. 03_message.xml๐HiMessageObject.java(ํด๋์ค)
โป xyz.itwill03.spring ํจํค์ง์ HiMessageObject.java ํด๋์ค ์์ฑ
package xyz.itwill03.spring; // public class HiMessageObject implements MessageObject { @Override public String getMessage() { // TODO Auto-generated method stub return "Hi!!!"; } }