Kri*_*ket 13 java glassfish jax-rs jersey
我一直在寻找,但似乎无法找到一个明确的答案......
服务器(我的问题的玻璃鱼)注入用@Context注释的实际objets的机制是什么?更具体地说,如果我想编写一个类似于以下内容的类:
@Path("/")
public class MyResource {
@GET
public String doSomething(@Context MyObject obj) {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
那我该怎么办?MyObject在哪里实现,谁在实现它,以及如何实现?
编辑:我见过以下内容:
在JAX-RS中使用@ Context,@ Extider和ContextResolver
http://jersey.576304.n2.nabble.com/ContextResolver-confusion-td5654154.html
但是,这与我所看到的不一致,例如在org.neo4j.server.rest.web.RestfulGraphDatabase的构造函数中,它具有以下签名:
public RestfulGraphDatabase(
@Context UriInfo uriInfo,
@Context Database database,
@Context InputFormat input,
@Context OutputFormat output,
@Context LeaseManager leaseManager )
Run Code Online (Sandbox Code Playgroud)
您可以编写自己的注入提供程序并将其插入Jersey - 查看SingletonTypeInjectableProvider和PerRequestTypeInjectableProvider - 扩展其中一个类(取决于您对可注入对象的生命周期),并在Web应用程序中将您的实现注册为提供程序.
例如,像这样:
@Provider
public class MyObjectProvider extends SingletonTypeInjectableProvider<Context, MyObject> {
public MyObjectProvider() {
// binds MyObject.class to a single MyObject instance
// i.e. the instance of MyObject created bellow will be injected if you use
// @Context MyObject myObject
super(MyObject.class, new MyObject());
}
}
Run Code Online (Sandbox Code Playgroud)
要在Web应用程序中包含提供程序,您有以下几种选择:
| 归档时间: |
|
| 查看次数: |
12868 次 |
| 最近记录: |