Я хочу использовать пружинную конфигурацию для аннотаций. Для запуска приложения я использую tomcat 8.5.50
. Для этого я использую
класс SpringRootConfig
@Configuration
@ComponentScan("com.demo")
public class SpringRootConfig {
}
. Я хочу использовать ViewResolver в классе SpringWebConfig и реализую WebMvcConfigurer.
@Configuration
@EnableWebMvc
@ComponentScan("com.demo.controller")
public class SpringWebConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**")
.addResourceLocations("/resources/");
}
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setSuffix("/WEB-INF/views/");
viewResolver.setPrefix(".jsp");
return viewResolver;
}
@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(restDataSource());
sessionFactory.setPackagesToScan(
"com.demo.models");
sessionFactory.setHibernateProperties(hibernateProperties());
return sessionFactory;
}
@Bean
public DataSource restDataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("org.postgresql.Driver");
dataSource.setUrl("url");
dataSource.setUsername("login");
dataSource.setPassword("password");
return dataSource;
}
Properties hibernateProperties() {
return new Properties() {
{
setProperty("hibernate.hbm2ddl.auto", "create");
setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQL9Dialect");
}
};
}
@Bean
@Autowired
public HibernateTransactionManager transactionManager(
SessionFactory sessionFactory) {
HibernateTransactionManager txManager = new HibernateTransactionManager();
txManager.setSessionFactory(sessionFactory);
return txManager;
}
}
и я использую WebDes c. Также я расширяю AbstractAnnotationConfigDispatcherServletInitializer следующим образом
public class WebDesc extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
rootContext.register(SpringRootConfig.class);
servletContext.addListener(new ContextLoaderListener(rootContext));
AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext();
applicationContext.register(SpringWebConfig.class);
DispatcherServlet dispatcherServlet = new DispatcherServlet(applicationContext);
dispatcherServlet.setThrowExceptionIfNoHandlerFound(true);
ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher", dispatcherServlet);
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
FilterRegistration.Dynamic encodingFilter = servletContext.addFilter("encoding-filter", new CharacterEncodingFilter());
encodingFilter.setInitParameter("encoding", "UTF-8");
encodingFilter.setInitParameter("forceEncoding", "true");
encodingFilter.addMappingForUrlPatterns(null, true, "/*");
}
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{SpringRootConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[] {SpringWebConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[0];
}
}
Но я получаю такую ошибку
Что я должен сделать, чтобы страница загрузилась?