Spring如何在Spring Boot中设置数据源

时间:2016-01-27 04:39:26

标签: java spring postgresql jdbc spring-boot

我刚刚学习Spring,过去几天我一直在努力解决如何配置Spring JdbcTemplate以使用我的PostgreSQL数据库。我不知道该怎么做。我一直在阅读文档,(例如http://docs.spring.io/spring/docs/current/spring-framework-reference/html/jdbc.html),但似乎我在圈子里四处走动。

从抛出的错误看来,它似乎无法实例化我作为bean编写的RelationalDatabase类。我不确定如何正确地实例化该类。

如何从完全有效的指南(如https://spring.io/guides/gs/relational-data-access/)转变为更复杂的解决方案?

关系数据库类

spring.datasource.url=jdbc:postgresql://192.168.56.102:5432/scibase
spring.datasource.type=org.postgresql.ds.PGPoolingDataSource 
spring.datasource.username=lemon
spring.datasource.password=XXXXXX
spring.datasource.platform=postgres
spring.datasource.max-active=100
spring.datasource.name=lime
spring.database.driverClassName=org.postgresql.Drive

\ SRC \主\资源\ application-dev.properties

[self.stageView addSubview:upwardView];

堆栈跟踪(摘要)

  

org.springframework.beans.factory.BeanCreationException:错误   创建名称为' relationalDatabase':注入自动装配的bean   依赖失败;嵌套异常是   org.springframework.beans.factory.BeanCreationException:不能   autowire方法:public void   com.scientifi.papers.db.relational.RelationalDatabase.setDataSource(javax.sql.DataSource的);

     

嵌套异常是   org.springframework.beans.factory.BeanCreationException:错误   创建名为' dataSource'的bean在类路径资源中定义   [组织/ springframework的的/ boot /自动配置/ JDBC / DataSourceAutoConfiguration $ NonEmbeddedConfiguration.class]:   通过工厂方法进行Bean实例化失败;

     

嵌套异常是   org.springframework.beans.BeanInstantiationException:失败   实例化[javax.sql.DataSource]:工厂方法' dataSource'扔   例外;嵌套异常是   org.springframework.boot.autoconfigure.jdbc.DataSourceProperties $ DataSourceBeanCreationException:   无法确定数据库类型的嵌入式数据库驱动程序类   没有。如果你想要一个嵌入式数据库,请放一个支持的数据库   类路径。如果您要从a加载数据库设置   您可能需要激活它的特定配置文件(配置文件" dev"   目前正在运行。)

谢谢!

2 个答案:

答案 0 :(得分:3)

你忘记了司机中的“r”吗? (无法确定数据库类型为NONE的嵌入式数据库驱动程序类

spring.database.driverClassName=org.postgresql.Driver

而不是

spring.database.driverClassName=org.postgresql.Drive

答案 1 :(得分:0)

当我从Junit测试我的Spring Boot应用程序时,我得到了相同的异常。

我使用Junit Test类上方的@SpringApplicationConfiguration(classes = Application.class)解决了它。 Spring Boot应用程序未正确初始化