程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在 Spring Boot 中配置数据源大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决在 Spring Boot 中配置数据源?

开发过程中遇到在 Spring Boot 中配置数据源的问题如何解决?下面主要结合日常开发的经验,给出你关于在 Spring Boot 中配置数据源的解决方法建议,希望对你解决在 Spring Boot 中配置数据源有所启发或帮助;

我有一个 Spring Boot 应用程序,

目前对数据源使用此配置

@Propertysource("file:D:\\Spring Workspace\\test\\dbconfig.propertIEs")
public class DatasourceConfig {
    @Value("db_driverClassname")
    private String classname;
    @Value("db_url")
    private String url;
    @Value("db_username")
    private String username;
    @Value("db_userpassword")
    private String password;
    
    @Bean
    public Datasource getDatasource() {
        datasourceBuilder.driverClassname(className);
        datasourceBuilder.url(url);
        datasourceBuilder.username(userName);
        datasourceBuilder.password(password);
        return datasourceBuilder.build();
    }
}

dbconfig.propertIEs 文件

db_driverClassname="org.POSTGResql.Driver"
db_url="jdbc:POSTGResql://localhost:5432/testDB"
db_username="POSTGRes"
db_userpassword="password"

例外

2021-07-15 12:34:21.400 ERROR 5352 --- [           main] com.zaxxer.hikari.HikariConfig           : Failed to load driver class db_driverClassname from HikariConfig class classloader jdk.internal.loader.ClassLoaders$AppClassLoader@368239c8
2021-07-15 12:34:21.403  WARN 5352 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfIEdDependencyException: Error creaTing bean with name 'datasourceScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/DatasourceInitializationConfiguration.class]: UnsatisfIEd dependency expressed through method 'datasourceScriptDatabaseInitializer' parameter 0; nested exception is org.springframework.beans.factory.beanCreationException: Error creaTing bean with name 'getDatasource' defined in class path resource [com/myapp/quartz/config/DatasourceConfig.class]: Bean instantiation via factory method Failed; nested exception is org.springframework.beans.beanInstantiationException: Failed to instantiate [javax.sql.Datasource]: Factory method 'getDatasource' threw exception; nested exception is java.lang.RuntimeException: Failed to load driver class db_driverClassname in either of HikariConfig class loader or Thread context classloader
2021-07-15 12:34:21.405  INFO 5352 --- [           main] o.apache.catalina.core.Standardservice   : StopPing service [tomcat]
2021-07-15 12:34:21.418  INFO 5352 --- [           main] ConditionEvaluationReportLoggingListener : 

Error starTing ApplicationContext. To display the conditions report re-run your application with 'deBUG' enabled.
2021-07-15 12:34:21.437 ERROR 5352 --- [           main] o.s.boot.SpringApplication               : Application run Failed

org.springframework.beans.factory.UnsatisfIEdDependencyException: Error creaTing bean with name 'datasourceScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/DatasourceInitializationConfiguration.class]: UnsatisfIEd dependency expressed through method 'datasourceScriptDatabaseInitializer' parameter 0; nested exception is org.springframework.beans.factory.beanCreationException: Error creaTing bean with name 'getDatasource' defined in class path resource [com/myapp/quartz/config/DatasourceConfig.class]: Bean instantiation via factory method Failed; nested exception is org.springframework.beans.beanInstantiationException: Failed to instantiate [javax.sql.Datasource]: Factory method 'getDatasource' threw exception; nested exception is java.lang.RuntimeException: Failed to load driver class db_driverClassname in either of HikariConfig class loader or Thread context classloader
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800) ~[spring-beans-5.3.8.jar:5.3.8]
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactorymethod(ConstructorResolver.java:541) ~[spring-beans-5.3.8.jar:5.3.8]
    at org.springframework.beans.factory.support.AbstractautowireCapablebeanfactory.instantiateUsingFactorymethod(AbstractautowireCapablebeanfactory.java:1334) ~[spring-beans-5.3.8.jar:5.3.8]
    at org.springframework.beans.factory.support.AbstractautowireCapablebeanfactory.createBeanInstance(AbstractautowireCapablebeanfactory.java:1177) ~[spring-beans-5.3.8.jar:5.3.8]
    at org.springframework.beans.factory.support.AbstractautowireCapablebeanfactory.doCreateBean(AbstractautowireCapablebeanfactory.java:564) ~[spring-beans-5.3.8.jar:5.3.8]
    at org.springframework.beans.factory.support.AbstractautowireCapablebeanfactory.createBean(AbstractautowireCapablebeanfactory.java:524) ~[spring-beans-5.3.8.jar:5.3.8]
    at org.springframework.beans.factory.support.Abstractbeanfactory.lambda$doGetBean$0(Abstractbeanfactory.java:335) ~[spring-beans-5.3.8.jar:5.3.8]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.8.jar:5.3.8]
    at org.springframework.beans.factory.support.Abstractbeanfactory.doGetBean(Abstractbeanfactory.java:333) ~[spring-beans-5.3.8.jar:5.3.8]
    at org.springframework.beans.factory.support.Abstractbeanfactory.getBean(Abstractbeanfactory.java:208) ~[spring-beans-5.3.8.jar:5.3.8]
    at org.springframework.beans.factory.support.Abstractbeanfactory.doGetBean(Abstractbeanfactory.java:322) ~[spring-beans-5.3.8.jar:5.3.8]
    at org.springframework.beans.factory.support.Abstractbeanfactory.getBean(Abstractbeanfactory.java:208) ~[spring-beans-5.3.8.jar:5.3.8]
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1154) ~[spring-context-5.3.8.jar:5.3.8]
    at org.springframework.context.support.AbstractApplicationContext.finishbeanfactoryInitialization(AbstractApplicationContext.java:908) ~[spring-context-5.3.8.jar:5.3.8]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.8.jar:5.3.8]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) ~[spring-boot-2.5.2.jar:2.5.2]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-2.5.2.jar:2.5.2]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) ~[spring-boot-2.5.2.jar:2.5.2]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:338) ~[spring-boot-2.5.2.jar:2.5.2]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) ~[spring-boot-2.5.2.jar:2.5.2]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1332) ~[spring-boot-2.5.2.jar:2.5.2]
    at com.myapp.quartz.GatewayApplication.main(GatewayApplication.java:17) ~[classes/:na]

我尝试通过手动设置值而不是将其放入文件中,这是可行的,但是当我尝试从文件中获取属性值时,我遇到了这个异常。

解决方法

您需要从属性值中删除引号

db_driverClassName=org.POSTGResql.Driver
db_url=jdbc:POSTGResql://localhost:5432/testDB
db_username=POSTGRes
db_userpassword=password
,

这里使用相对路径而不是绝对路径

@Propertysource("file:D:\\Spring Workspace\\test\\dbconfig.properties")

并删除 dbconfig.properties file

中的双引号 ,

我想在答案中再补充一点,在提出从@user7294900 得到的解决方案后,我仍然因此遇到了一个问题,终于解决了

属性文件中值的映射,我使用了错误的语法

@Value("db_driverClassName")

改为

@Value("${db_driverClassNamE}")

大佬总结

以上是大佬教程为你收集整理的在 Spring Boot 中配置数据源全部内容,希望文章能够帮你解决在 Spring Boot 中配置数据源所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。