我正在使用 Dropwizard JDBI 框架开发网络服务。
现在,我不想在 yaml 文件中使用数据库配置,而是使用“用户指定的参数”,我的意思是,数据库配置将通过端点 url 提供。
- 是否可以通过 dropwizard jdbi 获得自定义凭据?
如果是的话,在引用这个时我应该考虑在代码中做哪些更改?->
http://dropwizard.readthedocs.org/en/latest/manual/jdbi.html
我了解,在正常流程中,服务方法在运行方法中获取配置详细信息 -
-- 配置类
public class ExampleConfiguration extends Configuration {
@Valid
@NotNull
@JsonProperty
private DatabaseConfiguration database = new DatabaseConfiguration();
public DatabaseConfiguration getDatabaseConfiguration() {
return database;
}
}
-- 服务等级
@Override
public void run(ExampleConfiguration config,
Environment environment) throws ClassNotFoundException {
final DBIFactory factory = new DBIFactory();
final DBI jdbi = factory.build(environment, config.getDatabaseConfiguration(), "postgresql");
final UserDAO dao = jdbi.onDemand(UserDAO.class);
environment.addResource(new UserResource(dao));
}
-- 和 yaml
database:
# the name of your JDBC driver
driverClass: org.postgresql.Driver
# the username
user: pg-user
# the password
password: iAMs00perSecrEET
# the JDBC URL
url: jdbc:postgresql://db.example.com/db-prod
但在这种情况下,我可能会在资源级别获得配置详细信息......
之类的——
@GET
@Path(value = "/getProduct/{Id}/{dbUrl}/{dbUname}/{dbPass}")
@Produces(MediaType.APPLICATION_JSON)
public Product getProductById(@PathParam(value = "Id") int Id,
@PathParam(value = "dbUrl") String dbUrl,
@PathParam(value = "dbUname") String dbUname,
@PathParam(value = "dbPath") String dbPass) {
//I have to connect to the DB here! using the params i have.
return new Product(); //should return the Product
}
如果有人能指出我的方向,我将不胜感激。