Jetty - 在整合Spring的J2SE應用程式中嵌入Jetty的Web功能(Web中獲取Spring上下文中的Bean)
一、說明
如果開發了一個J2SE的應用程式,然後想用Web來完成一些的使用者介面,但是在啟動 Jetty 之前就已經建立和使用了 Spring 的 ApplicationContext,但這些Web的業務中也要依賴於 Spring 的 ApplicationContext,這樣就會遇到一個問題:原有應用程式和新加Web不在同一個上下文,在Web中如何獲取Spring中管理的Bean呢?
二、建立jetty-context.xml,並在原有的spring中引入
<?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="handler" class="org.eclipse.jetty.webapp.WebAppContext">
<property name="contextPath" value="/admin" />
<property name="resourceBase" value="./webapps/admin" />
<property name="logUrlOnStart" value="true" />
<property name="configurationDiscovered" value="true" />
</bean>
<bean id="server" class="org.eclipse.jetty.server.Server" init-method="start" destroy-method="stop">
<property name="connectors">
<list>
<bean id="Connector" class="org.eclipse.jetty.server.nio.SelectChannelConnector">
<property name="port" value="8080" />
</bean>
</list>
</property>
<property name="handler">
<ref bean="handler" />
</property>
</bean>
</beans>
二、專案中新增web目錄,並在該目錄下完善這個web的jsp或servlet
|--webapps
|--admin
|--WEB-INF
|--web.xml
|--index.jsp
三、建立一個獲取spring管理的bean的工具類(完成上兩步之後,問題來了,在這個web中管理的servlet和原有的Spring中管理的Bean是不同的上下文,不能直接注入)
package com.xilen.util.spring;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
/**
* 通過實現ApplicationContextAware以獲得這個Spring配置所在的上下文
*/
public class ApplicationContextHelper implements ApplicationContextAware {
private static ApplicationContext applicationContext = null;
/**
* 獲得Bean物件
*/
public static <T> T getBean(Class<T> clazz) {
return applicationContext.getBean(clazz);
}
/**
* 獲得Bean物件
*/
public static Object getBean(String className) {
return applicationContext.getBean(className);
}
/**
* 獲得應用所在上下文環境
*/
public static ApplicationContext getContext() {
return applicationContext;
}
/**
* 以讓 spring 把 application context 設定進來
*/
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
ApplicationContextHelper.applicationContext = applicationContext;
}
}
四、把ApplicationContextHelper配置到應用程式的Spring環境中去<bean id="applicationContextHelper" class="com.xilen.util.spring.ApplicationContextHelper" />
五、最後,在web的servlet中獲取並使用應用程式中Spring管理的BeanUserInfoService userInfoService = (UserInfoService) ApplicationContextHelper.getBean("userInfoService");
六、參考
http://virusfu.iteye.com/blog/1220407
相關文章
- Jetty - 在整合Spring的J2SE應用程式中嵌入Jetty的Web功能(應用和Web共用ApplicationContext)JettySpringWebAPPContext
- Jetty - 嵌入式WebJettyWeb
- Jetty嵌入式Web容器攻略JettyWeb
- Spring在程式碼中獲取bean的幾種方式SpringBean
- 在專案中獲取Spring的Bean的幾種方式SpringBean
- servlet中手動獲取spring的beanServletSpringBean
- WEB應用是如何運用Spring的?#①Spring的IOC容器如何在WEB中建立?WebSpring
- Web應用中的普通java程式獲取資原始檔WebJava
- 【譯】用maven使java web應用執行在內嵌的Jetty或TomMavenJavaWebJetty
- hadoop jetty的應用薦HadoopJetty
- 獲取spring裡的beanSpringBean
- Spring6 當中 獲取 Bean 的四種方式SpringBean
- Spring中的BeanSpringBean
- .在java和java web程式中的含義以及如何獲取web資源JavaWeb
- jetty、servlet以及spring的銜接原始碼分析JettyServletSpring原始碼
- web.xml中的contextConfigLocation在spring中的作用WebXMLContextSpring
- Spring中Bean及@Bean的理解SpringBean
- 剖析 SPI 在 Spring 中的應用Spring
- 在Spring boot中通過ApplicationContext獲取bean失敗Spring BootAPPContextBean
- Spring學習筆記四: 從Spring容器中獲取BeanSpring筆記Bean
- MVC模式在Java Web應用程式中的實現MVC模式JavaWeb
- Web應用中快取的七種武器Web快取
- Spring Web 應用的最大敗筆SpringWeb
- idea/eclipse下Maven工程整合web服務(tomcat、jetty)IdeaEclipseMavenWebTomcatJetty
- Struts 2 攔截器中得到bean以及讀取WEB-INF下的spring的xml檔案BeanWebSpringXML
- jetty啟動web專案原始碼分析JettyWeb原始碼
- Spring Boot 應用程式中的 QueryDSLSpring Boot
- 【Spring實戰】構建Spring Web應用程式SpringWeb
- AOP及其在Spring中的應用(一) .Spring
- AOP及其在Spring中的應用(二)Spring
- Spring中Bean的作用域SpringBean
- Spring中bean的含義SpringBean
- 五、Spring Web應用程式構建SpringWeb
- Jetty - 嵌入式執行ServletJettyServlet
- 在一個WEB應用程式中如何實現使用者上下線啊Web
- Guava Cache本地快取在 Spring Boot應用中的實踐Guava快取Spring Boot
- Jetty的server模組JettyServer
- 如何把Qlik Sense嵌入到Web應用中Web