Hej
Denerwuje mnie ten Spring niesamowicie (zwłaszcza, że ostatnio siedziałem w Sparku) i potrzebuję paru odpowiedzi.
Mam 2 działające konfiguracje w 2 różnych projektach - ale żadna nie chce działać w innej, tj. próba uruchomienia nowej konfiguracji wzorowanej na którejś z tych dwóch zawsze kończy się 404. Za każdym razem tworzę nową konfigurację dla Tomcata - dla opisanych niżej konfiguracji stworzenie nowej nie powoduje wysypania się projektu.
Konfiguracja 1:
package com.burdzi0.mvc.config;
... importy
@Configuration
@EnableWebMvc
@ComponentScan("com.burdzi0.mvc")
public class WebConfig implements WebMvcConfigurer {
@Bean
public InternalResourceViewResolver resolver() {
return new InternalResourceViewResolver("/WEB-INF/jsp", ".jsp");
}
}
i druga klasa:
package com.burdzi0.mvc.config;
... importy
@Configuration
public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
@Nullable
protected Class<?>[] getRootConfigClasses() {
return new Class[]{WebConfig.class};
}
@Nullable
protected Class<?>[] getServletConfigClasses() {
return new Class[]{WebConfig.class};
}
}
Konfiguracja 2 (inny projekt):
package com.websystique.springmvc.configuration;
... importy
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.websystique.springmvc")
public class HelloWorldConfiguration {
@Bean(name="HelloWorld")
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
}
i druga klasa:
package com.websystique.springmvc.configuration;
... importy
public class HelloWorldInitializer implements WebApplicationInitializer {
public void onStartup(ServletContext container) throws ServletException {
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
ctx.register(HelloWorldConfiguration.class);
ctx.setServletContext(container);
ServletRegistration.Dynamic servlet = container.addServlet(
"dispatcher", new DispatcherServlet(ctx));
servlet.setLoadOnStartup(1);
servlet.addMapping("/");
}
}
- Czy któraś konfiguracja jest poprawna?
- Z której powinienem korzystać (jeżeli jest poprawna) ?
- Jakich klas/interfejsów powinienem użyć?
- Gdzie poza dokumentacją (która ssie, bo rzuca ogólnikami, ale nie pokazuje jak poprawnie powinno zostać to zrobione) szukać pomocy?
Nie znajduję w internecie ani w dokumentacji odpowiedzi na pytanie z których klas (i jak) korzystać, aby móc postawić porządną konfigurację dla mojego programu. Gdybym czegoś nie uwzględnił to proszę o powiadomienie, bardzo zależy mi na odpowiedzi.