首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将ServerConfig块中的配置绑定到Ratpack groovy中?

如何将ServerConfig块中的配置绑定到Ratpack groovy中?
EN

Stack Overflow用户
提问于 2017-04-24 15:02:11
回答 1查看 143关注 0票数 0

我试图使用ServerConfig块在ratpack.groovy中合并服务器和数据库配置,但是在创建数据源时postgresConfig是空的。

PostgresConfig.groovy

代码语言:javascript
复制
@Compile Static
class PostgresConfig {
    String user
    String password
    String serverName
    String databaseName
    Integer portNumber
}

PostgresModule.groovy

代码语言:javascript
复制
@CompileStatic
class PostgresModule extends ConfigurableModule<PostgresConfig> {
    @Override
    protected void configure() {
    }

    @Provides
    DataSource dataSource(final PostgresConfig config) {
        createDataSource(config)
    }

    protected DataSource createDataSource(final PostgresConfig config) {
        new PgSimpleDataSource(
            user:         config.user,
            password:     config.password,
            serverName:   config.serverName,
            databaseName: config.databaseName,
            portNumber:   config.portNumber
        )
    }
}

ratpack.groovy

代码语言:javascript
复制
ratpack {
    serverConfig {
        props([
            'postgres.user':         'username',
            'postgres.password':     'password',
            'postgres.serverName':   'localhost',
            'postgres.databaseName': 'postgres',
            'postgres.portNumber':   5432
        ] as Map<String, String>)
        yaml "config.yaml"
        env()
        sysProps()
        require("/postgres", PostgresConfig)
    }
    bindings {
        PostgresConfig postgresConfig
        module HikariModule, { HikariConfig config ->
            config.dataSource = new PostgresModule().dataSource(postgresConfig)
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2017-04-26 07:59:06

bindings块中,您可以引用serverConfig配置,从而获得已配置的PostgresConfig。在用例中,不需要require("/postgres", PostgresConfig)语句。

您可以使PostgresModule类不扩展ConfigurableModule,因为它不被用作模块。

代码语言:javascript
复制
ratpack {
    serverConfig { ... }
    bindings {
        module HikariModule, { HikariConfig config ->
            config.dataSource = new PostgresModule().dataSource(serverConfig.get("/postgres", PostgresConfig)
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43591560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档