gpt4 book ai didi

dropwizard - 从 Initialize() 访问 Dropwizard 配置?

转载 作者:行者123 更新时间:2023-12-01 03:14:29 29 4
gpt4 key购买 nike

我正在尝试为 Dropwizard 创建一个计划作业,该作业每分钟运行一次并查询数据库中的值。

为此,我需要在 initialize() 中注册一些 DAO 和服务。阶段,像这样:

@Override
public void initialize(final Bootstrap<KMDServiceConfiguration> bootstrap) {

//JDBI
final DBIFactory factory = new DBIFactory();
final DateTimeArgumentFactory dateTimeFactory = new DateTimeArgumentFactory();
final DBI jdbi = factory
.build(environment, config.getDataSourceFactory(), "kmd");
jdbi.registerArgumentFactory(dateTimeFactory);

//DAOs
final UserDao userDao = jdbi.onDemand(UserDao.class);
final NotificationDao notificationDao = jdbi.onDemand(NotificationDao.class);

//Domain services
final UserService userService = new UserServiceImpl(userDao);
final NotificationService notificationService = new NotificationServiceImpl(notificationDao);

final MessageService messageService = new MessageServiceImpl(userService, notificationService);


final Job worker= new MessageWorker(messageService);
bootstrap.addBundle(new JobsBundle(worker));

JDBI 需要 Dropwizard environment和配置对象。

是否可以在此阶段访问这些以便正确设置我的依赖项?

最佳答案

您应该能够从 DW Application 类中的“run”方法初始化作业,该类可以访问配置和环境属性。我整理了一个简单的 project来展示这一点,但这是 run 方法的样子:

@Override
public void run(SOQ49638642Configuration configuration, Environment environment) throws Exception {

final DBI dbi = (new DBIFactory()).build(environment, configuration.getDataSourceFactory(), "kmd");

final SOQ49638642Job soq49638642Job = new SOQ49638642Job(new SOQ49638642Service(dbi.onDemand(SOQ49638642Dao.class)));

final JobsBundle jobsBundle = new JobsBundle(soq49638642Job);

jobsBundle.run(configuration, environment);
}

据我所知,不可能在“初始化”阶段获得这些对象。您还可以查看 DW 的 Guice 集成,例如 dropwizard-guicey它为 DW 中的 Bundles 和 Modules 的 DI 提供了很好的机制。

关于dropwizard - 从 Initialize() 访问 Dropwizard 配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49638642/

29 4 0
文章推荐: python - Django 组权限类字段
文章推荐: javascript - 对字符串和 if 测试的简单 JavaScript 查询
文章推荐: jquery - Flash PDF 按钮在多个 jQuery 选项卡中的 DataTables TableTools 中不起作用
文章推荐: javascript - 如果