2016-10-01 4 views
1

私は春のブートでは新しいです。私は、mysql、hibernate、jpa、およびjspでスプリングブートを設定したいと思います。 " 'SessionFactoryの' などの名前で作成中にエラーが発生しまし豆"、より多くのスタックトレースで:スプリングブート、mvc、hibernate、mysql設定 - sessionFactoryエラー

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [com/budget/configs/DatabaseConfig.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Class name must not be null 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1583) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE] 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE] 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE] 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE] 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE] 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE] 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE] 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:732) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE] 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:861) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE] 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE] 
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE] 
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE] 
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE] 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE] 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1186) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE] 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1175) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE] 
at com.budget.HomeBudgetApplication.main(HomeBudgetApplication.java:15) [classes/:na] 
Caused by: java.lang.IllegalArgumentException: Class name must not be null 
at org.springframework.util.Assert.notNull(Assert.java:115) ~[spring-core-4.3.3.RELEASE.jar:4.3.3.RELEASE] 
at org.springframework.util.ClassUtils.convertClassNameToResourcePath(ClassUtils.java:960) ~[spring-core-4.3.3.RELEASE.jar:4.3.3.RELEASE] 
at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.scanPackages(LocalSessionFactoryBuilder.java:282) ~[spring-orm-4.3.3.RELEASE.jar:4.3.3.RELEASE] 
at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:434) ~[spring-orm-4.3.3.RELEASE.jar:4.3.3.RELEASE] 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1642) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE] 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1579) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE] 
... 16 common frames omitted 

のpom.xml `4.0.0

<groupId>com.budget</groupId> 
<artifactId>demo</artifactId> 
<version>0.0.1-SNAPSHOT</version> 

<name>homeBudget</name> 
<description>Demo project for Spring Boot</description> 

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

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
    <java.version>1.8</java.version> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-aop</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.tomcat.embed</groupId> 
     <artifactId>tomcat-embed-el</artifactId> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-jpa</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-rest</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-security</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.session</groupId> 
     <artifactId>spring-session</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-validation</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web-services</artifactId> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/org.hibernate.javax.persistence/hibernate-jpa-2.1-api --> 
    <dependency> 
     <groupId>org.hibernate.javax.persistence</groupId> 
     <artifactId>hibernate-jpa-2.1-api</artifactId> 
     <version>1.0.0.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 

    </dependency> 

    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>jstl</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 
</dependencies> 

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


<packaging>war</packaging> 

私はGEN Iエラーがそれを開始したいとき`

HomeBudgetApplication.java

@Configuration 
@EnableAutoConfiguration() 
@ComponentScan({"com.budget.*"}) 
public class HomeBudgetApplication { 

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

} 
} 

DatabaseConfig.java

@Configuration 
@ComponentScan("com.budget.*") 
@EnableWebMvc 
@EnableTransactionManagement 
@PropertySource("classpath:application.properties") 
public class DatabaseConfig extends WebMvcConfigurerAdapter { 

@Autowired 
private Environment env; 

@Bean 
public DataSource dataSource() { 
    DriverManagerDataSource dataSource = new DriverManagerDataSource(); 

    dataSource.setDriverClassName(env.getProperty("spring.datasource.driverClassName")); 
    dataSource.setUrl(env.getProperty("spring.datasource.url")); 
    dataSource.setUsername(env.getProperty("spring.datasource.username")); 
    dataSource.setPassword(env.getProperty("spring.datasource.password")); 

    return dataSource; 
} 

@Bean 
public LocalSessionFactoryBean sessionFactory() { 
    LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean(); 
    sessionFactoryBean.setDataSource(dataSource()); 
    sessionFactoryBean.setPackagesToScan(env.getProperty("com.budget.*")); 
    sessionFactoryBean.setHibernateProperties(hibProperties()); 
    return sessionFactoryBean; 
} 

private Properties hibProperties() { 
    Properties properties = new Properties(); 
    properties.put("spring.jpa.database-platform", env.getProperty("spring.jpa.database-platform")); 
    properties.put("spring.jpa.hibernate.ddl-auto", env.getProperty("spring.jpa.hibernate.ddl-auto")); 
    properties.put("spring.jpa.show-sql", env.getProperty("spring.jpa.show-sql")); 
    return properties; 
} 

@Bean 
public HibernateTransactionManager transactionManager() { 
    HibernateTransactionManager transactionManager = new HibernateTransactionManager(); 
    transactionManager.setSessionFactory(sessionFactory().getObject()); 
    return transactionManager; 
} 

@Bean 
public InternalResourceViewResolver viewResolver() { 
    InternalResourceViewResolver resolver = new InternalResourceViewResolver(); 
    resolver.setPrefix("/WEB-INF/jsp/"); 
    resolver.setSuffix(".jsp"); 
    return resolver; 
} 
} 

application.properties

'spring.datasource.driverClassName=com.mysql.jdbc.Driver 
spring.datasource.url = jdbc:mysql://localhost:3306/budget 
spring.datasource.username=marcin 
spring.datasource.password=marcin123 
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect 
spring.jpa.show-sql=true 
spring.jpa.hibernate.ddl-auto=update 
entitymanager.packages.to.scan=com.budget' 
+0

なぜあなたは 'SessionFactory'を必要としますか?あなたはJPAを使いたいと述べています。その次に、あなたはSpring Bootを使用したいが、あなたの設定では、Springブートを使用しないことを非常に頑張っている。 –

答えて

2

最初にフレームワークを使用し、フレームワークを回避しないでください。また、Spring BootとJPAを使用したいと述べていますが、あなたの設定ではSpringBootを使用したくない、JPAは使用せず単純な休止状態であることを示しています。

最初にDatabaseConfigを削除してください。 (はい削除する)。

HomeBudgetApplicationcom.bugdetに移動し、すべての注釈を削除して、簡単な@SpringBootApplicationと置き換えてください。あなたのapplication.properties

@SpringBootApplication 
public class HomeBudgetApplication { 

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

InternalResourceViewResolverが自動的に設定されているためにspring.mvc.viewプロパティを追加します。また、既に追加されているようにentitymanager.packages.to.scanを削除してください。

spring.datasource.driverClassName=com.mysql.jdbc.Driver 
spring.datasource.url = jdbc:mysql://localhost:3306/budget 
spring.datasource.username=marcin 
spring.datasource.password=marcin123 
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect 
spring.jpa.show-sql=true 
spring.jpa.hibernate.ddl-auto=update 

spring.mvc.view.prefix=/WEB-INF/jsp/ 
spring.mvc.view.suffix=.jsp 

他のすべては、Spring Bootによって設定されます。それはあなたのウェブ、jpaとトランザクションを検出し、自動的にそれを設定します。

SessionFactoryに基づいてリポジトリなどがある場合は、代わりにEntityManagerで動作するように置き換えてください。

1

あなたがHomeBudgetApplicationDatabasebaseConfigに二回のパッケージをスキャンします。 componetetスキャンをDatabasebaseConfigで削除します。

幸運

+0

DatabaseConfigでコンポーネントスキャンを削除しましたが、問題は解決しませんでした –

関連する問題