我尝试使用Java配置从头开始构建基于Spring的应用程序,但是我收到警告,我完全不理解...... 有人能告诉我那里有什么问题吗?
错误: 警告:上下文初始化期间遇到异常 - 取消刷新尝试 org.springframework.beans.factory.BeanCreationException:创建名称为' applicationContext'的bean时出错:bean的实例化失败;嵌套异常是org.springframework.beans.BeanInstantiationException:无法实例化[org.springframework.context.ApplicationContext]:指定的类是一个接口
Aplication初始化程序:
public class SpringWebAppInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext appContext = new AnnotationConfigWebApplicationContext();
appContext.register(ApplicationContext.class);
ServletRegistration.Dynamic dispatcher = servletContext.addServlet("SpringDispatcher", new DispatcherServlet(appContext));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
servletContext.addListener(new ContextLoaderListener(appContext));
}
}
应用程序上下文配置:
@Configuration
@ComponentScan("pl.wybornie.entity.*")
@EnableTransactionManagement
public class ApplicationContextConfig {
@Bean(name = "viewResolver")
public InternalResourceViewResolver getViewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/pages/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
@Bean(name = "dataSource")
public DataSource getDataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/wyborniedb");
dataSource.setUsername("root");
dataSource.setPassword("root123");
return dataSource;
}
@Autowired
@Bean(name = "sessionFactory")
public SessionFactory getSessionFactory(DataSource dataSource) {
LocalSessionFactoryBuilder sessionBuilder = new LocalSessionFactoryBuilder(dataSource);
//sessionBuilder.addAnnotatedClasses(User.class);
sessionBuilder.scanPackages("pl.wybornie.entity", "pl.wybornie.entity.cookBook");
return sessionBuilder.buildSessionFactory();
}
@Autowired
@Bean(name = "transactionManager")
public HibernateTransactionManager getTransactionManager(SessionFactory sessionFactory) {
HibernateTransactionManager transactionManager = new HibernateTransactionManager(sessionFactory);
return transactionManager;
}
}
这些只是整个项目的2个配置类。
整个代码可在以下位置找到: https://github.com/annweg/wybornie.pl/tree/new_build/project_workspace/wybornie
我是春天的新手,也许有一些配置缺失......我使用的是Spring 4.1.6,Tomcat 7和Java 7.
编辑: 我试图从Spring注册ApplicationContext和我自己的配置类--ApplicationContextConfig - 错误是一样的。 我已经删除了Tomcat服务器并创建了新服务器,重新打开了Eclipse并且仍然是相同的。 将项目导入为新项目(删除所有设置和.project文件)都没有帮助,所以错误可能在配置中某处...?
答案 0 :(得分:0)
问题在于我的Eclipse设置。我删除了所有项目内容,更改了工作区,只是复制/粘贴了所有类和库,错误消失了。
答案 1 :(得分:0)
嗯,这种类型的错误通常与丢失的jar和/或classpath错误有关。检查是否有一些库没有添加到类路径中,或者项目需要一些以前存在但随后删除的库。有时我会将jar添加到classpath并删除它们并且它可以正常工作。