java - Spring 4 使用基于类的数​​据库初始化而不是 xml bean

标签 java spring applicationcontext

在我们的 Spring 4 应用程序中,我们当前在 applicationContext.xml 中配置数据库连接:

<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
    <property name="poolName" value="springHikariCP" />
    <property name="dataSourceClassName" value="org.postgresql.ds.PGSimpleDataSource" />
    <property name="maximumPoolSize" value="10" />
    <property name="idleTimeout" value="30000" />

    <property name="dataSourceProperties">
        <props>
            <prop key="url">jdbc:postgresql://google/mydb?cloudSqlInstance=project:region:myinstance&amp;socketFactory=com.google.cloud.sql.postgres.SocketFactory</prop>
            <prop key="user">postgres</prop>
            <prop key="password">password</prop>
        </props>
    </property>
</bean>

我可以在如下类中定义数据库配置,而不是在 applicationContext.xml 中定义它:

HikariConfig config = new HikariConfig();
config.setJdbcUrl(JDBC_URL);
config.setUsername(DB_USER);
config.setPassword(DB_PASS);
....

可以这样做吗?

最佳答案

您可以在 HikariDataSource 上定义属性

public DataSource getDataSource(){ 
   HikariDataSource dataSource = new HikariDataSource();
   dataSource.setJdbcUrl(JDBC_URL);
   dataSource.setUsername(DB_USER);
   dataSource.setPassword("DB_PASS);
   return dataSource;
}
public class HikariDataSource extends HikariConfig implements DataSource, Closeable

然后将您的方法声明为 @Configuration 类中的 @Bean

@Bean
public DataSource dataSource() {
    return DataSourceClass.getDataSource();
}

关于java - Spring 4 使用基于类的数​​据库初始化而不是 xml bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57409400/

相关文章:

java - 是否可以将 Spring beans xml 文件移到 WAR 之外?

java - GoogleSignInResult isSuccess 失败

Java 流的误解......一些澄清?

java - 当我在 Android 上扩展应用程序时,上下文在 Glide 上不起作用

java - Spring @Transactional - 我可以覆盖 rollbackFor

java - Spring Boot - 使用 inMemoryAuthentication

java - 根据赋予工厂 bean 的属性创建一个 bean

java链表与第一个元素进行比较并使用peek()方法删除

java - 如何在签名中使用泛型正确覆盖抽象方法

java - Spring Security 3.1 + JPA - 空指针异常