- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚刚使用 Jersey 启动了我的第一个 Java REST 项目。
在这个项目中,我将实现纯依赖注入(inject)架构模式(又名穷人依赖注入(inject))。
如果我理解正确的话,将为每个传入的 HTTP 请求创建此类的一个新实例:
@Path("/v1")
public class ApiControllerV1 {
@POST
@Path("/measurements")
public String newMeasurement() {
// some code here
}
}
我可以将 Composition Root 的生命周期“绑定(bind)”到 ApiControllerV1
的生命周期,但是这样我就失去了在不同请求之间共享对象的能力。
因此,我需要找到一些可以将组合根“绑定(bind)”到的“全局”对象。这个“全局”对象应该可以从 ApiControllerV1
访问。我确信这样的物体存在,但直到现在我还没有找到它。请为我指出正确的方向(代码片段将不胜感激)。
最佳答案
您可以注册 Controller 的实例。这样你就可以通过构造函数传递你想要的任何东西。如果您按类注册或允许 Jersey 为您的 Controller 打包扫描,则按请求实例化只是默认设置。但这不是强制性的
public class AppConfig extends ResourceConfig {
public AppConfig() {
final Whatever whatever = new Whatever();
register(new Controller1(whatever));
register(new Controller2(whatever));
}
}
如果您使用 web.xml 进行配置,则可以通过以下方式配置要使用的 AppConfig
<servlet>
<servlet-name>Jersey</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.example.AppConfig</param-value>
</init-param>
</servlet>
以前,您可能有过类似的情况
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.your.packages</param-value>
</init-param>
它允许 Jersey 扫描您的资源并为您注册。您可以摆脱这个,因为现在我们自己在 AppConfig
中注册所有内容。
您需要使用 Jersey 配置的任何其他操作,都可以在 AppConfig
内完成。请参阅API for ResourceConfig
顺便说一句,您应该考虑使用 Jersey 已经提供的 DI 系统。它非常容易使用。
关于java - Jersey:纯依赖注入(inject)和全局(单例)对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43786049/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!