Configuring Dependency Injection in Dropwizard (Guice)

1. Maven configuration

<dependency>
  <groupId>ru.vyarus</groupId>
  <artifactId>dropwizard-guicey</artifactId>
  <version>7.0.0</version>
</dependency>

2. Register guice package

public class HorseApplication extends Application<HorseConfiguration> {

    public static void main(final String[] args) throws Exception {
        new HorseApplication().run(args);
    }

    @Override
    public String getName() {
        return "Horse";
    }

    @Override
    public void initialize(final Bootstrap<HorseConfiguration> bootstrap) {
        // 注册guice包
        GuiceBundle guiceBundle = GuiceBundle.builder()
                .enableAutoConfig()
                .build();
        bootstrap.addBundle(guiceBundle);
    }

    @Override
    public void run(final HorseConfiguration configuration,
                    final Environment environment) {
    }
}

3. Dependency injection (three ways)

(1) Constructor injection

@Path("/goods")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class GoodsResource {

    private final GoodsRepository goodsRepository;

    @Inject
    public GoodsResource(GoodsRepository goodsRepository) {
        this.goodsRepository = goodsRepository;
    }
}

(2) Field injection

@Path("/goods")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class GoodsResource {

    @Inject
    private GoodsRepository goodsRepository;
}

(3) Setter method injection

@Path("/goods")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class GoodsResource {
    
    private GoodsRepository goodsRepository;

    @Inject
    public void setGoodsRepository(GoodsRepository goodsRepository) {
        this.goodsRepository = goodsRepository;
    }
}

おすすめ

転載: blog.csdn.net/m1729339749/article/details/131226243