gpt4 book ai didi

java - 需要构造函数参数的 ReSTLet 服务器资源

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:55:01 24 4
gpt4 key购买 nike

在 reSTLet 中出现这个错误:

ForwardUIApplication ; Exception while instantiating the target server resource.
java.lang.InstantiationException: me.unroll.forwardui.server.ForwardUIServer$UnsubscribeForwardUIResource

我很清楚为什么。这是因为我的构造函数看起来像这样:

public UnsubscribeForwardUIResource(MySQLConnectionPool connectionPool) {

ReSTLet 像这样访问资源:

router.attach(Config.unsubscribeUriPattern(), UnsubscribeForwardUIResource.class);

问题是我实际上需要那个 ctor 参数。我怎样才能使它易于访问? (请注意,我没有使用任何 IOC 框架,只是使用了很多 ctor 参数,但这实际上是一个 IOC 模式)。

最佳答案

您可以使用上下文将上下文属性传递给您的资源实例。

来自ServerResource API doc :

After instantiation using the default constructor, the final Resource.init(Context, Request, Response) method is invoked, setting the context, request and response. You can intercept this by overriding the Resource.doInit() method.

因此,在附件时:

router.getContext().getAttributes().put(CONNECTION_POOL_KEY, connectionPool);
router.attach(Config.unsubscribeUriPattern(), UnsubscribeForwardUIResource.class);

在您的 UnsubscribeForwardUIResource 类中,您必须将初始化代码从构造函数移至 de doInit 方法:

public UnsubscribeForwardUIResource() {
//default constructor can be empty
}

protected void doInit() throws ResourceException {

MySQLConnectionPool connectionPool = (MySQLConnectionPool) getContext().getAttributes().get(CONNECTION_POOL_KEY);

// initialization code goes here
}

关于java - 需要构造函数参数的 ReSTLet 服务器资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15073686/

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