ClassPathXmlApplicationContext или WebApplicationContext для веб-приложения без Spring Web

Я хочу использовать структуру Spring в своем приложении веб-служб Java (развернутом как война). У него нет пользовательского интерфейса или «видимого лица» для пользователя, поэтому не реализована структура пользовательского интерфейса. Просто услуги. Итак... нужен ли мне WebApplicationContext для загрузки конфигураций bean-компонентов? Или просто используйте ClassPathXmlApplicationContext и сохраните возвращенный контекст в синглтоне для последующего использования? Каков рекомендуемый шаблон в этом сценарии?


person sdgian    schedule 06.06.2014    source источник
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