Java/Spring/ApplicationContext
Содержание
ApplicationContext Aware
<source lang="java">
File: context.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 http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="contextAware" class="ContextAwareDemo"/>
</beans>
File: Main.java import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main {
public static void main(String[] args) throws Exception { ApplicationContext ctx = new ClassPathXmlApplicationContext( "context.xml"); ContextAwareDemo demo = (ContextAwareDemo) ctx.getBean("contextAware"); demo.displayAppContext(); }
} class ContextAwareDemo implements ApplicationContextAware {
private ApplicationContext ctx; public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { ctx = applicationContext; } public static void main(String[] args) { } public void displayAppContext() { System.out.println(ctx); }
}
</source>
ContextApplication Event
<source lang="java">
File: context.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 http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="publisher" class="EventPublisherDemo"/> <bean class="MessageEventListener"/>
</beans>
File: Main.java import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationListener; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main {
public static void main(String[] args) throws Exception { ApplicationContext ctx = new ClassPathXmlApplicationContext("context.xml"); EventPublisherDemo pub = (EventPublisherDemo) ctx.getBean("publisher"); pub.report("A"); pub.report("B"); }
} class EventPublisherDemo implements ApplicationContextAware {
private ApplicationContext ctx; public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.ctx = applicationContext; } public void report(String message) { ctx.publishEvent(new MessageEvent(this, message)); }
} class MessageEvent extends ApplicationEvent {
private String message; public MessageEvent(Object source, String message) { super(source); this.message = message; } public String getMessage() { return message; }
} class MessageEventListener implements ApplicationListener {
public void onApplicationEvent(ApplicationEvent event) { if (event instanceof MessageEvent) { MessageEvent messageEvent = (MessageEvent) event; System.out.println("Received " + messageEvent.getMessage()); } }
}
</source>
Create ApplicationContext with ClassPathXmlApplicationContext
<source lang="java">
File: context.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 http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="errorReporter" class="ErrorReporter"/>
</beans>
File: Main.java import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main {
public static void main(String[] args) throws Exception { ApplicationContext ctx = new ClassPathXmlApplicationContext( "context.xml"); ErrorReporter reporter = (ErrorReporter) ctx.getBean("errorReporter"); reporter.evaluate(1); }
} class ErrorReporter {
public void evaluate(int value) { System.out.println(value); }
}
</source>
ResourceLoader Demo
<source lang="java">
File: context.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 http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
File: Main.java import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.core.io.Resource; public class Main {
public static void main(String[] args) throws Exception { ApplicationContext ctx = new ClassPathXmlApplicationContext("context.xml"); Resource res1 = ctx.getResource("file:///tmp"); System.out.println(res1.getClass()); Resource res2 = ctx.getResource("classpath:com/yourName/Complex.class"); System.out.println(res2.getURL()); Resource res3 = ctx.getResource("http://www.google.ru"); System.out.println(res3.getFile()); }
}
</source>