在基于java的spring配置中创建applicationContext bean

时间:2015-04-03 21:58:15

标签: java spring spring-mvc javabeans applicationcontext

我尝试使用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文件)都没有帮助,所以错误可能在配置中某处...?

2 个答案:

答案 0 :(得分:0)

问题在于我的Eclipse设置。我删除了所有项目内容,更改了工作区,只是复制/粘贴了所有类和库,错误消失了。

答案 1 :(得分:0)

嗯,这种类型的错误通常与丢失的jar和/或classpath错误有关。检查是否有一些库没有添加到类路径中,或者项目需要一些以前存在但随后删除的库。有时我会将jar添加到classpath并删除它们并且它可以正常工作。