gpt4 book ai didi

java - 在 Jersey 获得 @Context 字段的最早机会

转载 作者:太空宇宙 更新时间:2023-11-04 06:48:22 25 4
gpt4 key购买 nike

我可以通过将对象设为 Application(或 ResourceConfig)的属性来使其对我的 Jersey 资源可见

这不起作用:

public class MyResource {
@Context private Application app;
private SomeType thing;

public MyResource() {
thing = (SomeType) app.getProperties().get("thing"); // NullPointerException
}
}

...因为显然注入(inject)在构造函数运行之后才会发生。

这确实有效:

public class MyResource {
@Context private Application app;
private SomeType thing;

@GET
@Path("foo")
public AnotherType get() {
thing = (SomeType) app.getProperties().get("thing"); // NullPointerException
...
}
}

但是在每个方法开始时都有一个获取该属性的步骤似乎不太优雅(即使它是对延迟初始化方法的调用)。

是否有其他方法可以使方法在构造函数之后但在调用任何 @GET/@POST/etc 方法之前运行?

最佳答案

@PostConstruct 是你的 friend 。

只要您的类在 Jersey 中注册,就会在类实例化、注入(inject)完成之后以及执行任何服务调用之前调用使用 @PostConstruct 注解的方法。

据我所知,Jersey 文档中并未具体提及这一点,但 Google 上有一些提及。这确实有意义,因为对于任何注入(inject)框架,注入(inject)都需要在对象创建之后发生,并且它们都使用 @PostConstruct 注释来提供在注入(inject)完成后进行初始化的位置。

关于java - 在 Jersey 获得 @Context 字段的最早机会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23673840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com