2015-04-03 92 views
1

我試圖從頭構建基於spring的應用程序,使用Java配置,但我得到的警告我完全不明白... 有人能告訴我什麼是那裏錯了?在基於java的spring配置中創建applicationContext bean

錯誤: 警告:上下文初始化過程中遇到異常 - 取消刷新嘗試 org.springframework.beans.factory.BeanCreationException:錯誤創建名爲「的applicationContext」豆芽:黃的實例化失敗;嵌套異常是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文件)沒有幫助,所以也許錯誤是在配置的某處...?

+1

'ApplicationContext'和'ApplicationContextConfig'是兩種不同的類型。投票結束爲錯字。 – 2015-04-03 22:06:21

+0

當將此ApplicationContextConfig更改爲ApplicationContext時,它顯示相同的錯誤消息...並且對我來說它沒有任何感覺,因爲整個配置位於這些ApplicationContextConfig中... – argh 2015-04-03 22:10:11

+2

No ...更改'ApplicationContext'(**屬於的類型到Spring **)轉換爲'onStartup'方法中的'ApplicationContextConfig'(**你定義的類型**)。 – 2015-04-03 22:10:51

回答

0

問題出在我的Eclipse設置上。我已經刪除了所有的項目內容,改變了工作空間,只是複製/粘貼所有的類和庫,錯誤消失了。

0

好吧,這種類型的錯誤通常與丟失的jar和/或classpath錯誤有關。檢查是否有一些庫未添加到classpath中,或者該項目需要一些之前存在但已被刪除的庫。有時我會將jar添加到classpath中並將其刪除,並且它可以正常工作。

相關問題