我正在尝试使用SpringBoot和Postgres数据库开发Web应用程序。但是,在连接到应用程序时,我收到错误“无法确定合适的驱动程序类”,按照旧帖子中的建议,我尝试过使用不同版本的jdbc驱动程序,也尝试过手动为NamedParameterJdbcTemplate创建bean。我还验证了库是否存在,是否可以从Java代码访问,以及是否存在于类路径中。但仍然存在同样的问题。我正在使用gradle将所有jar导入构建路径。
下面是代码的git仓库:https://github.com/ashubisht/sample-sbs.git
Gradle依赖项代码:
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
compile("org.springframework.boot:spring-boot-starter-websocket")
compile("org.springframework.boot:spring-boot-starter-jdbc")
//compile("org.postgresql:postgresql")
compile("org.postgresql:postgresql:9.4-1206-jdbc42")
testCompile("org.springframework.boot:spring-boot-starter-test")
testCompile group: 'junit', name: 'junit', version: '4.12'
}
用于生成Bean的代码
@Configuration
@PropertySource("classpath:application.properties")
public class Datasource {
@Value("${db.driverClassName}")
private String driverClass;
@Value("${db.url}")
private String url;
@Value("${db.username}")
private String username;
@Value("${db.password}")
private String password;
@Bean
public NamedParameterJdbcTemplate namedParameterJdbcTemplate() throws Exception{
System.out.println(driverClass+" "+ url+" "+username+" "+password);
DriverManagerDataSource source = new DriverManagerDataSource();
source.setDriverClassName(driverClass);
source.setUrl(url);
source.setUsername(username);
source.setPassword(password);
NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(source);
return namedParameterJdbcTemplate;
}
}
这里是application.properties
server.port=8086
# spring.datasource.driverClassName=org.postgresql.Driver
# spring.datasource.url= jdbc:postgresql://localhost:5432/testdb
# spring.datasource.username=postgres
# spring.datasource.password=password
# spring.datasource.platform=postgresql
# spring.jpa.hibernate.ddl-auto=create-drop
db.driverClassName=org.postgresql.Driver
db.url=jdbc:postgresql://localhost:5432/testdb
db.username=postgres
db.password=password
5条答案
按热度按时间uqxowvwt1#
通过创建两个Bean解决了此问题。为DataSource和NamedParameterJdbcTemplate创建了单独的Bean。
ezykj2lf2#
对我来说,这个问题是postgresSql的一个错误拼写
它只有一个s,
取代了
1.数据库名称:数据库名称:
1.数据库名称:数据库名称
与
数据库名称:数据库名称:
在Hibernate方言上也检查同样的事情,
将
PostgresSQLDialect
替换为PostgreSQLDialect
iqxoj9l93#
有同样的问题。我的解决方案是将
application.properties
文件扩展名更改为application.yml
kxkpmulp4#
对我来说错误是
无法配置数据源:未指定'url'属性,无法配置任何嵌入式数据源。原因:无法确定合适的驱动程序类
措施:请考虑以下事项:如果您需要嵌入式数据库(H2,HSQL或Derby),请将其放在类路径中。如果您有要从特定概要文件加载的数据库设置,则可能需要激活它(当前没有活动的概要文件)。
问题是缺少配置文件,所以我在类路径中添加了以下内容,它起作用了
Spring.轮廓.活动=偏差
m528fe3b5#
你试试看
希望对你有所帮助!