我想在我的Dropwizard public class DropwizardBackendConfiguration extends Configuration {
@NotEmpty
private String uploadFileLocation;
@JsonProperty
public String getUploadFileLocation() {
return uploadFileLocation;
}
@JsonProperty
public void setUploadFileLocation(String uploadFileLocation) {
this.uploadFileLocation = uploadFileLocation;
}
}
中使用geta String并从资源类访问它。
我已将该类添加到配置
public void run(
final DropwizardBackendConfiguration configuration, final Environment environment) {
...
System.out.println(configuration.getUploadFileLocation());
}
我可以在run方法中获取内容
$date = new DateTime( "NOW" );
echo $date->format( "m-d-Y H:i:s.u" );
但是如何在我的资源类中获取此值。
答案 0 :(得分:3)
如果要在Jersey资源中使用完整的DropwizardBackendConfiguration
或uploadFileLocation
,则必须将其作为构造函数参数传递。
入门指南illustrates this with the HelloWorldResource
。在此示例中,有两个构造函数参数:
public HelloWorldResource(String template, String defaultName)
此课程的一个实例是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);
}
使用您的配置和资源类执行类似的操作。
答案 1 :(得分:-1)
可能已经晚了,但是您可以通过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();
}
}