【发布时间】:2016-09-07 09:42:49
【问题描述】:
我正在尝试了解 Jersey 2 开发和上下文依赖注入。
我不明白如何将需要在构造函数中初始化参数的对象注入资源。 例如:我想@Inject slf4j Logger,使用 LoggerFactory 构建。
我的资源类是:
@Path("/myresource")
public class MyResource {
@Inject
private Logger log;
@GET
@Produces(MediaType.APPLICATION_JSON)
public Answer status() {
log.info("STATUS");
return new Answer(200, "Server up and running @ "+ ZonedDateTime.now());
}
}
我的资源配置是:
public class MyAppextends ResourceConfig {
public MyApp() {
register(new MyBinder());
packages(true, "my.packages");
}
}
public class MyBinder extends AbstractBinder {
@Override
protected void configure() {
bindFactory(MyLoggerFactory.class).to(org.slf4j.Logger.class);
}
}
最后,工厂是:
public class MyLoggerFactory implements Factory<Logger> {
@Override
public Logger provide() {
return LoggerFactory.getLogger(TYPE_FOR_LOGGING.class);
}
@Override
public void dispose(Logger logger) {
}
}
如何将 TYPE_FOR_LOGGING 指定为参数,以便在我想要的每个资源中注入正确初始化的 Logger?
谢谢
【问题讨论】:
标签: dependency-injection jersey-2.0 hk2