2015-12-06 5 views
2

Я разрабатываю веб-приложение с Spring MVC (4.2.3) и Servlet 3.0 API, поэтому нет web.xml.Spring MVC, Servlet 3.0: как создать ресурс-ref

Мой WebConfig.java выглядит следующим образом:

... 
import javax.servlet.ServletContext; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 

@Configuration 
@EnableWebMvc 
@ComponentScan(basePackages = {...}) 
public class WebConfig extends WebMvcConfigurerAdapter { 

@Autowired 
ServletContext servletContext; 

} 

Я создаю это весеннее приложение путем копирования из приложения Java с Servlet < 3.0, так что есть web.xml, который содержит этот раздел о источник данных:

<resource-ref> 
    <res-ref-name>jdbc/DefaultDB</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
</resource-ref> 

Как создать такую ​​установку в моем приложении Spring MVC, где нет никакого web.xml?

В то же время я взглянул на «Спецификацию сервлета Java версии 3.0». Это говорит о @Resource:

аннотаций @Resource используется для объявления ссылки на ресурс , такие как источник данных ... Это примечание эквивалентно объявлению ресурсов реф ...

@Resource пример:

@Resource private javax.sql.DataSource catalogDS; 
public getProductsByCategory() { 
// get a connection and execute the query 
Connection conn = catalogDS.getConnection(); 
.. 
} 

В примере кода выше, сервлета, фильтр или слушатель объявляет полевой каталогDS типа javax.sql.DataSource, для которого ссылка на источник данных вводится контейнером до того, как компонент становится доступным для приложения. Отображение JNDI источника данных определяется из имени поля «catalogDS» и типа (javax.sql.DataSource). Кроме того, ресурс catalogDS больше не должен определяться в дескрипторе развертывания.

К сожалению, я не знаю, как его использовать и как его подключить к Springs JDBCTemplate. Is

public class WebConfig extends WebMvcConfigurerAdapter { 

нужная местность вообще?

ответ

1

я реализовал слушателя путем расширения

org.springframework.web.context.ContextLoaderListener 

и добавил аннотацию

@WebListener. 

В этом слушателю поле

@Resource private javax.sql.DataSource catalogDS; 

успешно заполняется.

http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContextListener.html http://docs.oracle.com/javaee/6/api/javax/servlet/annotation/WebListener.html http://docs.oracle.com/javaee/6/api/javax/annotation/Resource.html

+0

Спасибо! Однако, насколько мне известно, javax.servlet.ServletContextListener является управляемым компонентом контейнера сервлета, и мне нужен javax.sql.DataSource в контексте приложения Spring. – swdhsn

Смежные вопросы