Я хочу использовать структуру Spring в своем приложении веб-служб Java (развернутом как война). У него нет пользовательского интерфейса или «видимого лица» для пользователя, поэтому не реализована структура пользовательского интерфейса. Просто услуги. Итак... нужен ли мне WebApplicationContext для загрузки конфигураций bean-компонентов? Или просто используйте ClassPathXmlApplicationContext и сохраните возвращенный контекст в синглтоне для последующего использования? Каков рекомендуемый шаблон в этом сценарии?
ClassPathXmlApplicationContext или WebApplicationContext для веб-приложения без Spring Web
comment
Используете ли вы DispatcherServlet для вызова обработчиков веб-служб?
- person kdgregory   schedule 07.06.2014
comment
Нет я не. Я использую Spring, чтобы обернуть свои pojos как веб-сервисы.
- person sdgian   schedule 09.06.2014
Ответы (1)
Я пишу службу отдыха (но у меня также есть html-страница с javascript, которая документирует службу). Я думаю, это похоже на то, что вам нужно, но вам нужно добавить немного больше, если вы хотите принимать разные заголовки (json и т. д.). Мне нужно всего несколько файлов, чтобы все заработало.
Вот мой web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="testing-services" version="2.5" metadata-complete="true"
xmlns="..." xmlns:xsi="..."
xsi:schemaLocation="...">
<display-name>Testing Services</display-name>
<description>Services for selenium</description>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:persistence-config.xml
classpath:transactions-config.xml
classpath:testing-service-config.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<servlet>
<servlet-name>mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>/assets/pages/testing-service.html</welcome-file>
</welcome-file-list>
<session-config>
<session-timeout>60</session-timeout>
</session-config>
</web-app>
У меня есть почти пустой mvc-servlet.xml (у него пустой тег beans
).
Мой testing-service-config.xml
, на который ссылается web.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="..."
xmlns:xsi="..."
xmlns:context="..."
xsi:schemaLocation="...">
<context:component-scan base-package="com.myorg.app"/>
</beans>
И, наконец, класс конфигурации Spring TestingServiceConfiguration:
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import static org.springframework.http.MediaType.TEXT_HTML;
@Configuration
@EnableWebMvc
@ComponentScan({"com.myorg.app"})
public class TestingServiceConfiguration extends WebMvcConfigurerAdapter {
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.ignoreAcceptHeader(true);
configurer.favorParameter(false);
configurer.favorPathExtension(false);
configurer.defaultContentType(TEXT_HTML);
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/assets/**").addResourceLocations("/assets/");
}
}
person
Software Engineer
schedule
06.06.2014