Spring DI가 적용된 HelloWorld
- 프로그래밍/Spring FWK
- 2015. 12. 13. 17:26
Hello World Spring 버젼
* 프로젝트는 STS 에서 Simple Spring Utility Project로 생성 함.
[app-context.xml]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?xml version="1.0" encoding="UTF-8"?> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <bean id = "provider" class = "com.ljs.spring.provider.impl.StandardMessageProvider"/> <bean id = "renderer" class = "com.ljs.spring.render.impl.StandardMessageRender"> <property name="provider" ref="provider"/> </bean> </beans> | cs |
* bean id는 xml 파일과 applicationCotext에서 유효하다. 실제 생성되는 객체는 class="" 부븐의 객체를 생성한다. property를 지정하는 경우 bean생성시 맴버 변수에 지정값을 자동으로 입력하여 준다. 대신에 관련 프로퍼티에 setter 메소드는 구현되어 있어야 한다.
[interface IMessageProvider]
1 2 3 4 5 | package com.ljs.spring.provider; public interface IMessageProvider { public String getMessage(); } | cs |
[StandardMessageProvider implements IMessageProvider]
1 2 3 4 5 6 7 8 9 10 11 | package com.ljs.spring.provider.impl; import com.ljs.spring.provider.IMessageProvider; public class StandardMessageProvider implements IMessageProvider{ public String getMessage() { return "Hello World"; } } | cs |
[interface IMessageProvider]
1 2 3 4 5 6 7 8 9 | package com.ljs.spring.render; import com.ljs.spring.provider.IMessageProvider; public interface IMessageRender { public void render(); public void setMessageProvider(IMessageProvider provider); public IMessageProvider getMessageProvider(); } | cs |
[StandardMessageRender implements IMessageRender]
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 | package com.ljs.spring.render.impl; import com.ljs.spring.provider.IMessageProvider; import com.ljs.spring.render.IMessageRender; public class StandardMessageRender implements IMessageRender { private IMessageProvider provider = null; public void render() { if(provider == null) { throw new RuntimeException("message provider not founded: " + StandardMessageRender.class.getName()); } else { System.out.println(provider.getMessage()); } } public IMessageProvider getProvider() { return provider; } public void setProvider(IMessageProvider provider) { this.provider = provider; } } | cs |
[SpringHelloWorld.main]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | package com.ljs.spring; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.ljs.spring.render.IMessageRender; public class SpringHelloWorld { public static void main(String[] args) { // app-context.xml에 설정된 bean정보를 기반으로 bean생성 ApplicationContext ctx = new ClassPathXmlApplicationContext("META-INF/spring/app-context.xml"); // 생성된 bean 중 필요한 bean id를 지정하여 획득 IMessageRender renderer = (IMessageRender) ctx.getBean("renderer", IMessageRender.class); renderer.render(); } } | cs |
사용되는 인터페이스와 구현체는 이전과 다를 바 없다. 대신 spring projects는 이전과 다르게 별도 properties 파일이 필요 없다 . 또한 Factory패턴을 구현하는 bean관리 패턴이 없다. 이 모든 것은 app-context.xml 파일이 관련 정보를 대신하고, bean에 대한 관리는 ApplicationContext에서 모두 처리하여 주기 때문이다.
다운로드
'프로그래밍 > Spring FWK' 카테고리의 다른 글
Spring Setter DI (0) | 2015.12.13 |
---|---|
Spring Bean생성 XML, Annotation예제 (0) | 2015.12.13 |
IoC in Spring : ApplicationContext (0) | 2015.12.13 |
IoC in Spring : BeanFactory (0) | 2015.12.13 |
Spring IoC (0) | 2015.12.13 |
Properties, Interface를 이용하여 IoC를 구현한 HelloWorld (0) | 2015.12.13 |
Spring설치, CORE Jar파일, 서드파티 Jar 파일 용도설명 (0) | 2015.12.13 |
Spring 소개 (0) | 2015.12.13 |
이 글을 공유하기