1
Мне тяжело работать с каркасом для трикотажа.Как я могу ввести пользовательский завод, используя hk2?
У меня есть ресурс root.
@Path("sample")
public class SampleResource {
@GET
@Path("path")
@Produces({MediaType.TEXT_PLAIN})
public String readPath() {
return String.valueOf(path);
}
@Inject
private java.nio.file.Path path;
}
Я подготовил завод, предоставив path
.
public class SamplePathFactory implements Factory<Path> {
@Override
public Path provide() {
try {
return Files.createTempDirectory(null);
} catch (final IOException ioe) {
throw new RuntimeException(ioe);
}
}
@Override
public void dispose(final Path instance) {
try {
Files.delete(instance);
} catch (final IOException ioe) {
throw new RuntimeException(ioe);
}
}
}
И связующее.
public class SamplePathBinder extends AbstractBinder {
@Override
protected void configure() {
bindFactory(SamplePathFactory.class).to(Path.class);
}
}
И, наконец, мой испытательный класс.
public class SampleResourceTest extends ContainerPerClassTest {
@Override
protected Application configure() {
final ResourceConfig resourceConfig
= new ResourceConfig(SampleResource.class);
resourceConfig.register(SamplePathBinder.class);
return resourceConfig;
}
}
Когда я попытался проверить, я получил.
org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object available for injection at SystemInjecteeImpl(requiredType=Path,parent=SampleResource,qualifiers={},position=-1,optional=false,self=false,unqualified=null,1916953383)
Что я сделал не так?
Можете ли вы, пожалуйста, посмотрите на http://stackoverflow.com/q/29767581/330457? –