当前位置: 首页 > 知识库问答 >
问题:

dropwizard版本迁移和DI

夏谦
2023-03-14

我试图将dlotwizard从1.2迁移到与DI相关的2.0.24(和2.0.25)时遇到了一些问题,想知道是否有人有同样的问题或任何想法。

我们有一个应用程序,

public class Account extends Application<AccountConfiguration> {
    public static void main(String[] args) throws Exception {
        new Account().run(args);
    }

    @Override
    public void initialize(Bootstrap<Configuration> bootstrap) {
        bootstrap.addBundle(new DropwizardBundle<>());
    }

    @Override
    public void run(AccountConfiguration configuration, Environment environment) throws Exception { 
        ...
        environment.jersey().register(new SessionResource(authenticationService));
    }
}

DropWizardBundle类将实例绑定到类:

public void run(AccountConfiguration configuration, Environment environment) {
    environment.jersey().register(new AbstractBinder() {
        @Override
        protected void configure() {
            bind(configuration.getResponder()).to(Responder.class);
        }
    });

SessionResource看起来像

@Path("/sessions")
@Consumes(MediaType.APPLICATION_JSON)
@Produces({MediaType.APPLICATION_JSON, "application/v1+json"})
@RequiredArgsConstructor
@Timed
public class SessionResource {
    @Inject
    private Responder responder;
    private final AuthenticationService authenticationService;
    
    @POST / @GET methods
}

Dropwizard 1.2中的当前代码正在运行,Responder被注入。切换到2.0.24/25响应器为空。我想知道我是否在迁移中错过了什么..

共有1个答案

阎志义
2023-03-14

我不确定这是否按照您在版本1中的预期方式(或您认为的方式)工作。X为你。我不知道什么配置.getResponder()正在返回,所以我不能真正测试你的案例。我发现对于使用DI的资源类,我看到人们面临的很多问题都可以通过注册类来解决,并允许H2K为您实例化资源。

< code>environment.jersey()。register(session resource . class);

您必须通过注册资源来更新将AuthenticationService传递到资源的方式,以便也可以注入它。下面是将其注册为AuthenticationService作为单例的示例。

public void run(AccountConfiguration configuration, Environment environment) {
    environment.jersey().register(new AbstractBinder() {
        @Override
        protected void configure() {
           //Not sure how AuthenticationService is instantiate but this is an example
            bind(new AuthenticationService()).to(AuthenticationServic.class).in(Singleton.class);

        }
    });

 类似资料:
  • 我正在开发迁移应用程序 [删除向导 0.7.0]。要使用迁移生成数据库结构.xml,我正在为 Postgres 和 ORACLE 数据库运行数据库迁移命令。对于 Postgres,我成功地生成了数据库结构,但是当尝试 ORACLE 时,以下详细信息导致异常 对于这些预言机设置,我得到以下异常

  • 主要内容:快照和还原模块,完全群集重新启动,滚动升级在任何系统或软件中,当我们升级到较新版本时,需要按照几个步骤来维护应用程序设置,配置,数据和其他事情。 这些步骤是使应用程序在新系统中保持稳定或保持数据的完整性(防止数据损坏)所必需的。 以下是升级Elasticsearch的步骤 - 从 http://www.elastic.co/ 阅读了解如何更改文档。 在非生产环境(如UAT,E2E,SIT或DEV环境)中测试升级版本。 如果没有数据备份,则

  • 本文向大家介绍迁移PHP版本到PHP7,包括了迁移PHP版本到PHP7的使用技巧和注意事项,需要的朋友参考一下 今天看到微博上说phpng也就是php7合并到master上了,大家都知道我是比较喜欢探讨最新版本的东西,看看有什么特性,我就忍不住升级去了,以前我的PHP版本是5.5.19,然后我就开始了。 然后编译配置参数,我的博客服务器是腾讯云服务器,因为是博客配置比较低。如下: 下边是针对php

  • 我想使用 Flyway 获取特定数据库的最新架构版本值。Flyway 中是否有函数可以在命令行中获取当前架构版本号? 我可以运行以下命令: 这为我提供了数据库的整个架构内容(缩短),如下所示: 我只对最后一个架构条目版本“1.5.9”值感兴趣。 我的环境如下: < li>Windows 7 < li>Flyway 3.0

  • 迁移CVS版本库到Subversion 或许让CVS用户熟悉Subversion最好的办法就是让他们的项目继续在新系统下工作,这可以简单得通过平淡的把CVS版本库的导出数据导入到Subversion完成,或者是更加完全的方案,不仅仅包括最新数据快照,还包括所有的历史,从一个系统到另一个系统。这是一个非常困难的问题,包括推导保持原子性的修改集,转化两个系统完全不同的分支政策。但是我们还是有许多工具声

  • Read up https://docusaurus.io/blog/2018/09/11/Towards-Docusaurus-2 first for problems in v1's approach. note The versioned docs should normally be migrated correctly by the migration CLI Migrate your