Quarkus 获取JDBC连接

2022-12-19 11:45
227
0

pom.xml导入一下依赖包

<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-agroal</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.17</version>
</dependency>

 

import io.agroal.api.AgroalDataSource;
import io.agroal.api.configuration.AgroalDataSourceConfiguration;
import io.agroal.api.configuration.supplier.AgroalDataSourceConfigurationSupplier;
import io.agroal.api.security.NamePrincipal;
import io.agroal.api.security.SimplePassword;
import org.eclipse.microprofile.config.inject.ConfigProperty;

import static io.agroal.api.configuration.AgroalConnectionPoolConfiguration.ConnectionValidator.defaultValidator;
import static java.time.Duration.ofSeconds;

import javax.enterprise.context.ApplicationScoped;

public class MyDb {

    @ConfigProperty(name="quarkus.datasource.username")
    String username;

    @ConfigProperty(name="quarkus.datasource.password")
    String password;

    @ConfigProperty(name="quarkus.datasource.jdbc.url")
    String url;

    @ApplicationScoped
    public AgroalDataSource getDefaultDataSource(){
        try {
            return  AgroalDataSource.from(createDataSourceConfiguration());
        }catch (Exception e){
            e.printStackTrace();
        }

        return null;
    }

    private  AgroalDataSourceConfiguration createDataSourceConfiguration() {
        System.out.println("url="+url);
        return new AgroalDataSourceConfigurationSupplier()
                .dataSourceImplementation(AgroalDataSourceConfiguration.DataSourceImplementation.AGROAL)
                .metricsEnabled(false)
                .connectionPoolConfiguration(cp -> cp.minSize(0).maxSize(5).initialSize(0)
                        .connectionValidator(defaultValidator()).acquisitionTimeout(ofSeconds(5))
                        .leakTimeout(ofSeconds(5)).validationTimeout(ofSeconds(50)).reapTimeout(ofSeconds(500))
                        .connectionFactoryConfiguration(cf -> cf
                                .jdbcUrl(url)
                                .connectionProviderClassName("com.mysql.cj.jdbc.Driver")
//                                .connectionProviderClassName("org.postgresql.Driver")
                                .principal(new NamePrincipal(username))
                                .credential(new SimplePassword(password))))
                .get();
    }
}
 

全部评论