如何从 Dropwizard 资源中的 config.yml 文件中获取字符串?
How to get String from config.yml file in Dropwizard resource?
我想在我的 Dropwizard config.yml
中获取一个字符串并从资源 class 访问它。
我已将 class 添加到配置
public class DropwizardBackendConfiguration extends Configuration {
@NotEmpty
private String uploadFileLocation;
@JsonProperty
public String getUploadFileLocation() {
return uploadFileLocation;
}
@JsonProperty
public void setUploadFileLocation(String uploadFileLocation) {
this.uploadFileLocation = uploadFileLocation;
}
}
我能够在 运行 方法中获取内容
public void run(
final DropwizardBackendConfiguration configuration, final Environment environment) {
...
System.out.println(configuration.getUploadFileLocation());
}
但是我怎样才能在我的资源中得到这个值class。
如果您想在 Jersey 资源中使用完整的 DropwizardBackendConfiguration
或仅 uploadFileLocation
,则必须将其作为构造函数参数传递。
入门指南illustrates this with the HelloWorldResource
。在此示例中,有两个构造函数参数:
public HelloWorldResource(String template, String defaultName)
这个 class 的一个实例是 registered in the run
method:
@Override
public void run(HelloWorldConfiguration configuration,
Environment environment) {
final HelloWorldResource resource = new HelloWorldResource(
configuration.getTemplate(),
configuration.getDefaultName()
);
environment.jersey().register(resource);
}
使用您的配置和资源做类似的事情 class。
可能会迟到,但你可以通过 dropwizard-guice 依赖项来完成,该库使用 Google guice 进行依赖项注入,使用注解配置 Java 对象。 As an extract from this article by Ricky Yim
您可以将属性注入资源,如下所示
package com.github.codingricky;
import com.google.inject.Inject;
import com.google.inject.name.Named;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
@Path("/hello")
public class HelloResource {
private final String message;
@Inject
public HelloResource(@Named("message") String message) {
this.message = message;
}
@GET
public String hello() {
return message;
}
}
这些值是使用模块从您的 .yml 配置中选取的,
public class ServerModule implements Module {
@Override
public void configure(Binder binder) {
}
@Provides
@Named("message")
public String provideMessage(ServerConfiguration serverConfiguration) {
return serverConfiguration.getMessage();
}
}
我想在我的 Dropwizard config.yml
中获取一个字符串并从资源 class 访问它。
我已将 class 添加到配置
public class DropwizardBackendConfiguration extends Configuration {
@NotEmpty
private String uploadFileLocation;
@JsonProperty
public String getUploadFileLocation() {
return uploadFileLocation;
}
@JsonProperty
public void setUploadFileLocation(String uploadFileLocation) {
this.uploadFileLocation = uploadFileLocation;
}
}
我能够在 运行 方法中获取内容
public void run(
final DropwizardBackendConfiguration configuration, final Environment environment) {
...
System.out.println(configuration.getUploadFileLocation());
}
但是我怎样才能在我的资源中得到这个值class。
如果您想在 Jersey 资源中使用完整的 DropwizardBackendConfiguration
或仅 uploadFileLocation
,则必须将其作为构造函数参数传递。
入门指南illustrates this with the HelloWorldResource
。在此示例中,有两个构造函数参数:
public HelloWorldResource(String template, String defaultName)
这个 class 的一个实例是 registered in the run
method:
@Override
public void run(HelloWorldConfiguration configuration,
Environment environment) {
final HelloWorldResource resource = new HelloWorldResource(
configuration.getTemplate(),
configuration.getDefaultName()
);
environment.jersey().register(resource);
}
使用您的配置和资源做类似的事情 class。
可能会迟到,但你可以通过 dropwizard-guice 依赖项来完成,该库使用 Google guice 进行依赖项注入,使用注解配置 Java 对象。 As an extract from this article by Ricky Yim
您可以将属性注入资源,如下所示
package com.github.codingricky;
import com.google.inject.Inject;
import com.google.inject.name.Named;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
@Path("/hello")
public class HelloResource {
private final String message;
@Inject
public HelloResource(@Named("message") String message) {
this.message = message;
}
@GET
public String hello() {
return message;
}
}
这些值是使用模块从您的 .yml 配置中选取的,
public class ServerModule implements Module {
@Override
public void configure(Binder binder) {
}
@Provides
@Named("message")
public String provideMessage(ServerConfiguration serverConfiguration) {
return serverConfiguration.getMessage();
}
}