Я очень новичок в весенней загрузке и создаю свое первое приложение.При создании источника данных я использую @ConfigurationProperties с префиксом и свойствами для чтения из application.property.
Однако эта настройка, похоже, не работает для меня, и моя программа не работает.
Мои свойства из файла application.property:
spring.datasource.url=jdbc:h2:file:~/appboot
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driver-class-name=org.h2.Driver
Мой код:
@Configuration
public class PersistentConfiguration {
@Bean
@ConfigurationProperties(prefix="spring.datasource")
@Primary
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
}
Я понимаю, что @ConfigurationProperties
не читает свойства из моего файла.Если я предоставлю детали в методе построителя, как показано ниже, он будет работать хорошо:
return DataSourceBuilder.create()
.url("jdbc:h2:file:~/appboot")
.username("sa")
.password("")
.driverClassName("org.h2.Driver")
.build();
Мой файл pom.xml имеет:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
</parent>
Мой класс репозитория:
import org.springframework.data.jpa.repository.JpaRepository;
import com.boot.model.Shipwreck;
public interface ShipwreckRepository extends JpaRepository<Shipwreck, Long>{
}
Мой главный класс:
@SpringBootApplication
public class App
{
public static void main( String[] args )
{
SpringApplication.run(App.class, args);
}
}
ошибка:
org.springframework.beans.factory.BeanCreationException: Ошибка создания компонента с именем «flywayInitializer», определенным в ресурсе пути к классу [org / springframework / boot / autoconfigure / flyway / FlywayAutoConfiguration $ FlywayConfiguration.class]: сбой вызова метода init;Вложенное исключение - java.lang.IllegalArgumentException: jdbcUrl требуется с driverClassName.at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1699) ~ [spring-beans-5.0.9.RELEASE.jar: 5.0.9.RELEans для того или иного) илиsupport.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:573) ~ [spring-beans-5.0.9.RELEASE.jar: 5.0.9.RELEASE] в org.springframework.: 495) ~ [spring-beans-5.0.9.RELEASE.jar: 5.0.9.RELEASE] в org.springframework.beans.factory.support.AbstractBeanFactory.lambda $ doGetBean $ 0 (AbstractBeanFactory.java:317) ~ [весна-beans-5.0.9.RELEASE.jar: 5.0.9.RELEASE] в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:222) ~ [spring-beans-5.0.9.RELEASE.jar: 5.0.9.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:315)~ [spring-beans-5.0.9.RELEASE.jar: 5.0.9.RELEASE] в org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:199) ~ [spring-beans-5.0.9.RELEASE.jar: 5.0.9.RELEASE] в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:304) ~ [spring-beans-5.0.9.RELEASE.jar: 5.0.9.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:199) ~ [spring-beans-5.0.9.RELEASE.jar: 5.0.9.RELEASE] в org.springframework.context.support.AbstractApplicationContext.getBean (AbstractApplicationContext.java:1089) ~ [spring-context-5.0.9.RELEASE.jar: 5.0.9.RELEASE] в org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryApplicationInte) ~ [spring-context-5.0.9.RELEASE.jar: 5.0.9.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:550) ~ [spring-context-5.0.9.RELEASE.jar: 5.0.9.RELEASE] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh (ServletWebServerApplicationContext.java:140) ~ [spring-boot-2.0.5.RELEASE.jar: 2.0.5.RELEASE]springframework.boot.SpringApplication.refresh (SpringApplication.java:780) [spring-boot-2.0.5.RELEASE.jar: 2.0.5.RELEASE] в org.springframework.boot.SpringApplication.refreshContext (SpringApplication.java:412)[spring-boot-2.0.5.RELEASE.jar: 2.0.5.RELEASE] в org.springframework.boot.SpringApplication.run (SpringApplication.java:333) [spring-boot-2.0.5.RELEASE.jar: 2.0.5.RELEASE] at org.springframework.boot.SpringApplication.run (SpringApplication.java:1277) [spring-boot-2.0.5.RELEASE.jar: 2.0.5.RELEASE]в org.springframework.boot.SpringApplication.run (SpringApplication.java:1265) [spring-boot-2.0.5.RELEASE.jar: 2.0.5.RELEASE] в com.boot.App.main (App.java:15)) [classes /: na] Причина: java.lang.IllegalArgumentException: jdbcUrl требуется с driverClassName.на com.zaxxer.hikari.HikariConfig.validate (HikariConfig.java:1059) ~ [HikariCP-2.7.9.jar: na] на com.zaxxer.hikari.HikariDataSource.getConnection (HikariDataSource.java:109) ~ [Hikari2.7.9.jar: na] в org.flywaydb.core.internal.util.jdbc.JdbcUtils.openConnection (JdbcUtils.java:51) ~ [flyway-core-5.0.7.jar: na] в org.flywaydb.core.internal.database.DatabaseFactory.createDatabase (DatabaseFactory.java:67) ~ [flyway-core-5.0.7.jar: na] в org.flywaydb.core.Flyway.execute (Flyway.java:1634) ~ [flyway-core-5.0.7.jar: na] в org.flywaydb.core.Flyway.migrate (Flyway.java:1168) ~ [flyway-core-5.0.7.jar: na] в org.springframework.boot.autoconfigure.flyway.FlywayMigrationInitializer.afterPropertiesSet (FlywayMigrationInitializer.java:66) ~ [spring-boot-autoconfigure-2.0.5.RELEASE.jar: 2.0.5.RELEASE] в org.springframework.beans.factory.support.AbstractAabletohoanAbstractAutowireCapableBeanFactory.java:1758) ~ [spring-beans-5.0.9.RELEASE.jar: 5.0.9.RELEASE] в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1695) ~ [spring-beans-5.0.9.RELEASE.jar: 5.0.9.RELEASE] ... 18 общих фреймов опущено * 10 10 * **
Пожалуйста, дайте мне знать, если мне потребуется также предоставить любую другую информацию.