2016-05-09 11 views
1

私は私の春のアプリケーションを実行すると、私はこのエラーを取得しています:私のメインクラスがどのように見えるスレッド "main"の例外org.springframework.context.ApplicationContextException:組み込みコンテナを開始できません。

Exception in thread "main" org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.context.ApplicationContextException: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean. 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:124) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:476) 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:109) 
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:691) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:320) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:952) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:941) 
    at com.dh.test.Application.main(Application.java:13) 
Caused by: org.springframework.context.ApplicationContextException: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean. 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.getEmbeddedServletContainerFactory(EmbeddedWebApplicationContext.java:174) 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:147) 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:121) 
    ... 7 more 

@Configuration 
@ComponentScan 
public class Application{ 

     public static void main(String[] args) { 
      SpringApplication.run(Application.class, args); 
     } 

} 

私は、javaを通じて、スプリングのプロパティを設定しようとしています@Beanを使用するクラス:

@Configuration 
@EnableJpaRepositories(
      entityManagerFactoryRef = "customerEntityManager", 
      transactionManagerRef = "customerTransactionManager", 
      basePackages = {"com.dh.test.repository.customer"}) 
public class CustomerDbConfig { 

    @Bean 
    public LocalContainerEntityManagerFactoryBean entityManagerFactory(){ 
     JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); 
     LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); 
     em.setDataSource(dataSource()); 
     em.setPackagesToScan(new String[] {"com.dh.test.model.customer"}); 
     em.setJpaVendorAdapter(vendorAdapter); 
     em.setJpaProperties(additionalJpaProperties()); 
     em.setPersistenceUnitName("customers"); 
     return em; 
    } 

    Properties additionalJpaProperties(){ 
     Properties properties = new Properties(); 
     properties.setProperty("hibernate.ddl-auto", "update"); 
     properties.setProperty("jdbc.dialect", "org.hibernate.dialect.MySQLDialect"); 
     properties.setProperty("hibernate.show-sql", "true"); 

     return properties; 
    } 

    @Bean 
    public DataSource dataSource(){ 
     return DataSourceBuilder.create() 
       .url("jdbc:mysql://localhost:3306/customer") 
       .driverClassName("com.mysql.jdbc.Driver") 
       .username("root") 
       .password("root") 
       .build(); 
    } 

    @Bean 
    public JpaTransactionManager transactionManager(EntityManagerFactory customerEntityManager){ 
     JpaTransactionManager transactionManager = new JpaTransactionManager(); 
     transactionManager.setEntityManagerFactory(customerEntityManager); 
     return transactionManager; 
    } 
} 

私のpom.xmlのエキス

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>org.test</groupId> 
    <artifactId>boot-multidb-sample</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>boot-multidb-sample</name> 
    <description>Spring Boot Multiple Database Configuration</description> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.1.6.RELEASE</version> 
     <relativePath /> <!-- lookup parent from repository --> 
    </parent> 

    <dependencies> 

     <!-- Datasource and connection pool dependencies --> 
     <!-- <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> 
      </dependency> --> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.33</version> 
     </dependency> 

    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-jpa</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-jpa</artifactId> 
     <version>2.0.8</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-jdbc</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-jpa</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
    </dependency> 
    </dependencies> 


    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

は、誰もがこのエラーを修正するための可能な解決策を与えてくださいすることができ、私は依存関係hirerachyと私のプロジェクトで依存関係をチェックしてみました。

+0

あなたは春ブーツは、その後、春のブートを使用使用しています。なぜあなたはあなた自身ですべてを構成しているのですか?春の起動はあなたのためにそれをしています(基本的にはあなたの全体の構成クラスを削除することができます)。また、あなたのアプリケーションクラスには '@ EnableAutoConfiguration'がありません。あるいは、3つの注釈をすべて単一の@ SpringBootApplication'に置き換え、依存関係として' spring-boot-starter-web'を追加してください。 –

+0

私はjpaでレイヤーを作成して、データベースに別々のスキーマを生成しようとしています。なぜなら、自分自身でevrythingを設定しているからです。 – Deepanjan

+0

それでもあなたはSpring Bootを使うことができます。あなたの現在はデフォルトを上書きしています。ただ1つのトランザクションマネージャしか持っていません。あなたが複数のエンティティマネージャを持っていない限り、あなたはそのようなことをする必要はありません。主な点は間違った 'Application'クラス(アノテーションがありません)と、依存関係がないという事実です。 –

答えて

2

EmbeddedServletContainerFactory Beanは初期化されていないようです。あなたはそれをキックオフする必要があります。

は、あなたのアプリケーションクラスに@SpringBootApplication注釈を追加

@SpringBootApplication 
public class Application { 
    public static void main(String[] args) { 
     SpringApplication.run(ScheduledTasks.class, args); 
    } 
} 

は@SpringBootApplication注釈は

  • @Configuration
  • @ComponentScan
  • @EnableAutoConfigurationが含まれています(これはあなたの問題を解決する可能性のあるものです)

また、あなたがあなたのポンポンで春ブート・スターター・ウェブの依存関係を追加する必要があります

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-web</artifactId> 
</dependency> 

出典: Spring boot error :Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean

Spring Boot: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean

+0

これらの可能な解決策は私が通過したが、それはうまくいきませんでした。 – Deepanjan

+0

あなたのpomファイルに問題があると思われます。他のコメントで述べたように、spring jarファイルはすべて同じバージョンで、必要なすべてのjarを追加したことを確認してください。 –

+0

これはアプリケーションクラスの13行ですか? –

関連する問題