使用java代码中的数据库属性在Spring中配置连接池

多纳泰罗

我需要在 Web 应用程序中配置连接池。使用 common-dbcp 我写道:

@Configuration
public class SpringConfig {
    @Bean
    @Singleton
    public DataSource getDataSource() {
        BasicDataSource basicDataSource = new BasicDataSource();
        basicDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        basicDataSource.setUrl("jdbc:mysql://localhost:3306/db?serverTimezone=UTC");
        basicDataSource.setUsername("name");
        basicDataSource.setPassword("password");
        basicDataSource.setInitialSize(5);
        basicDataSource.setMinIdle(3);
        basicDataSource.setMaxIdle(15);
        basicDataSource.setMaxWait(10000);
        basicDataSource.setMaxActive(100);
        return basicDataSource;
    }
}

我正在尝试使用 database.properties 文件对其进行配置。

    @Configuration
    @PropertySource("classpath:database.properties")
    public class SpringConfig {
        private @Value("${propertyName}") String propertyField;

        @Bean
        @Singleton
        public DataSource getDataSource() {
            BasicDataSource basicDataSource = new BasicDataSource();
            basicDataSource.setConnectionProperties(propertyField);
            return basicDataSource;
        }
    }

我创建了 database.properties 并将其放在目录src/main/resources 中内容如下:

driverClassName = "com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://localhost:3306/db"
username="user"
password="password"

但它告诉我“财产未使用”我在做什么错?

更新
解决方案是

@Configuration
@PropertySource("classpath:/database.properties")
public class SpringConfig {
    @Autowired
    Environment environment;

    @Bean
    @Singleton
    public DataSource getDataSource() {
            BasicDataSource basicDataSource = new BasicDataSource();
            basicDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
            basicDataSource.setUrl("jdbc:mysql://localhost:3306/dbname?serverTimezone=UTC");
            basicDataSource.setUsername(environment.getProperty("username"));
            basicDataSource.setPassword(environment.getProperty("password"));
            ..other actions is here
       }
}

重要提示:
你应该setUserName()setPassword()之前其他设置顺序如下。

安迪·杜福雷

我假设此配置不适用于测试,因为测试需要不同的注释。您提到该文件位于资源文件夹中。你能确认它的 src/main/resources 吗?如此处详述您也不需要 @PropertySource 注释。您还可以尝试使用JVM属性“--spring.config.location =类路径:/another-location.properties”详见这里作为一个例子。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java Servlet中的数据库连接池

来自分类Dev

了解python中的数据库连接池

来自分类Dev

如何在Spring JPA中管理数据库连接池?

来自分类Dev

Java中没有应用程序服务器的数据库连接池

来自分类Dev

使用HSQLDB和Spring嵌入式数据库启用连接池

来自分类Dev

使用连接池进行Spring Boot和数据库测试

来自分类Dev

为什么要限制SQLAlchemy中的数据库连接池大小?

来自分类Dev

JBoss AS / Wildfly中的多用户数据库连接池

来自分类Dev

JBoss AS / Wildfly中的多用户数据库连接池

来自分类Dev

设置连接池。重新连接数据库

来自分类Dev

org.springframework.context.ApplicationContextException:数据库连接池配置不正确

来自分类Dev

Spring Batch中的每个作业调用都会打开一个新的数据库连接池吗?

来自分类Dev

R并行进程的数据库连接池

来自分类Dev

golang sqlite数据库连接池

来自分类Dev

Tomcat-数据库连接池问题

来自分类Dev

在多个不同数据库环境上的连接池

来自分类Dev

节点MySQL连接池-等待数据库启动

来自分类Dev

Vaadin和数据库连接池

来自分类Dev

Vaadin和数据库连接池

来自分类Dev

Tomcat-数据库连接池问题

来自分类Dev

在多个不同数据库环境上的连接池

来自分类Dev

java中更好的连接池方法

来自分类Dev

如何在Sequelize.js中使用数据库连接池

来自分类Dev

如何在JPA / Hibernate应用程序中配置连接池(没有Spring)?

来自分类Dev

Elasticsearch中的连接池

来自分类Dev

如何在IIS中配置连接池?

来自分类Dev

Java连接池不限制打开到数据库服务器的TCP连接的数量

来自分类Dev

如何在Play Java中创建数据库线程池并使用此池进行数据库查询

来自分类Dev

Spring Data Jedis连接池配置

Related 相关文章

热门标签

归档