Spring MVC - DispatcherServlet przez adnotacje


Dostałem wiosenną aplikację MVC.
Działa na Tomcat 7.
Do tej pory otrzymałem tę część w moim pliku web.xml:
<servlet>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/app-config.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>

Czy istnieje sposób na zainicjowanie go za pomocą adnotacji? Mam klasę
MainSettings.java
, w której wszystkie moje ziarna są inicjowane z adnotacją
@Bean
. Jak więc mogę tam dostać init
DispatherServlet
?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Oto przykład z komentarzami. Mam nadzieję, że to ci pomoże.
public class ApplicationInitializer implements WebApplicationInitializer {//Called first when the application starts loading.
public void onStartup(ServletContext servletContext)
throws ServletException {
System.out.println("Inside application initializer...");//Registering the class that incorporates the annotated DispatcherServlet configuration of spring
AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
rootContext.register(DispatcherConfig.class);//Adding the listener for the rootContext
servletContext.addListener(new ContextLoaderListener(rootContext));//Registering the dispatcher servlet mappings.
ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher", new DispatcherServlet(rootContext));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
}}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Piszę to, ponieważ

Odpowiedź Japa
https://stackoverflow.com/a/16710069/2055620%20Japs's%20answer
prowadzi do utworzenia innego kontekstu, który nie widzi treści kontekstu bezpieczeństwa.
public class WebInitializer extends
AbstractAnnotationConfigDispatcherServletInitializer { private static final Log LOGGER = LogFactory.getLog(WebInitializer.class); @Override
protected Class<?>[] getRootConfigClasses() {
/* this is where you will return you config class
* your root config class should @Import other configs
* to make them work without needing them to add there
*/
return new Class[] { ViewConfig.class };
} @Override
protected Class<?>[] getServletConfigClasses() {
return new Class[0];
} @Override
protected String[] getServletMappings() {
return new String[] { "/" };
}}

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się