Java/Spring/IoC Context
Context Aware Demo
<source lang="java">
/* Pro Spring By Rob Harrop Jan Machacek ISBN: 1-59059-461-4 Publisher: Apress
- /
/////////////////////////////////////////////////////////////////////////////// //File: aware.xml <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans>
<bean id="contextAware" class="ContextAwareDemo"/>
</beans> /////////////////////////////////////////////////////////////////////////////// import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.support.FileSystemXmlApplicationContext; public class ContextAwareDemo implements ApplicationContextAware {
private ApplicationContext ctx; public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { ctx = applicationContext; } public static void main(String[] args) { ApplicationContext ctx = new FileSystemXmlApplicationContext( "build/aware.xml"); ContextAwareDemo demo = (ContextAwareDemo) ctx.getBean("contextAware"); demo.displayAppContext(); } public void displayAppContext() { System.out.println(ctx); }
}
</source>
Message Event
<source lang="java">
/* Pro Spring By Rob Harrop Jan Machacek ISBN: 1-59059-461-4 Publisher: Apress
- /
/////////////////////////////////////////////////////////////////////////////////////// //File: events.xml <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans>
<bean id="publisher" class="Publisher"/> <bean id="messageEventListener" class="MessageEventListener"/>
</beans>
/////////////////////////////////////////////////////////////////////////////////////// import org.springframework.context.ApplicationEvent;
public class MessageEvent extends ApplicationEvent {
private String msg; public MessageEvent(Object source, String msg) { super(source); this.msg = msg; } public String getMessage() { return msg; }
} /////////////////////////////////////////////////////////////////////////////////////// import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationListener; public class MessageEventListener implements ApplicationListener {
public void onApplicationEvent(ApplicationEvent event) { if(event instanceof MessageEvent) { MessageEvent msgEvt = (MessageEvent)event; System.out.println("Received: " + msgEvt.getMessage()); } }
} ///////////////////////////////////////////////////////////////////////////////////////
import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.support.FileSystemXmlApplicationContext; public class Publisher implements ApplicationContextAware {
private ApplicationContext ctx; public static void main(String[] args) { ApplicationContext ctx = new FileSystemXmlApplicationContext( "build/events.xml"); Publisher pub = (Publisher) ctx.getBean("publisher"); pub.publish("Hello World!"); pub.publish("The quick brown fox jumped over the lazy dog"); } public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.ctx = applicationContext; } public void publish(String message) { ctx.publishEvent(new MessageEvent(this, message)); }
}
</source>