繁体   English   中英

春季:如何在Groovy DAO中以编程方式配置tomcat数据源

[英]Spring : How to configure tomcat Datasource Programatically in Groovy DAO

我将我的tomcat数据源配置为XML,如下所示:

<bean id="docDataSource"
    class="org.apache.tomcat.jdbc.pool.DataSource" 
    destroy-method="close"
    p:driverClassName="${doc.database.driver}" 
    p:url="${doc.database.url}"
    p:username="${doc.database.user}" 
    p:password="${doc.database.password}"
    p:validationQuery="select 1" 
    p:testOnBorrow="true" 
    p:minIdle="2" 
    p:maxIdle="4" 
    p:maxActive="6" 
    p:defaultTransactionIsolation="1">
</bean>

我的customDAO(groovy类)使用上述数据源,如下所示

import org.springframework.beans.factory.annotation.Autowired
import org.springframework.beans.factory.annotation.Qualifier
import org.springframework.stereotype.Component
import groovy.sql.Sql
import org.apache.log4j.Level
import javax.sql.DataSource
import java.util.Map
import java.util.Map.Entry
import java.util.ResourceBundle

@Component
public class customDao implements GroovyInterceptable {

    @Autowired
    private Services services

    @Autowired
    @Qualifier("docDataSource")
    private DataSource            dataSource
   // implementation    
}

我想将tomcat dataSource切换到类文件而不是XML。 有人可以帮我怎么做吗?

这是您可以遵循的代码(对于PostgreSQL,但它应该或多或少都可以相同地工作):

import org.postgresql.ds.PGPoolingDataSource
import org.springframework.beans.factory.annotation.Value
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration

import javax.sql.DataSource

@Configuration
class PostgreSQLDatasourceConfiguration {

  @Bean(name = 'dataSource')
  DataSource ds(@Value('${DATABASE_URL}') String databaseFullUrl) {
    assert databaseFullUrl, 'Database URL is required to start the application'

    URI uri = new URI(databaseFullUrl)
    def (_, dbUsername, dbPassword) = (uri.getUserInfo() =~ /(.*):(.*)/)[0]

    (DataSource) new PGPoolingDataSource().tap {
      url = "jdbc:postgresql://$uri.host:${uri.port}$uri.path"
      password = dbPassword
      user = dbUsername
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM