避免javaee中的重复参数

避免javaee中的重复参数,java,jakarta-ee,Java,Jakarta Ee,TL;DR问题在于避免方法签名中的重复参数而不会降低性能 public void foo(Context context, Config config, Request request); void helper(Context context, Request request); void otherHelper(Context context, Config config, Request request); 我需要这样的签名: public void foo(Request reques

TL;DR问题在于避免方法签名中的重复参数而不会降低性能

public void foo(Context context, Config config, Request request);
void helper(Context context, Request request);
void otherHelper(Context context, Config config, Request request);
我需要这样的签名:

public void foo(Request request);
void helper(Request request);
void ohterHelper(Request request);
配置不会经常更改,一些参数将在请求范围内。缓存可能具有更广泛的会话范围等

我想把这个想法应用到Java企业环境中

它应该是一个带有注入字段
config
的bean,它调用其他bean
f
g
(也带有字段
config
),并连接结果,如示例所示。它应该扩展到更多的字段,如
config
(例如
context
cache
),但在实际的方法签名中只允许来自客户机的请求数据(在本例中,不允许简洁)

应管理所有
config
字段的生命周期,以便在某些外部管理范围(例如,请求facade)的持续时间内,所有bean都可以看到相同的
config

可能存在解决此问题的EE模式

我显然不是在寻找使用
ThreadLocal
的解决方案,因为我希望能够并行运行任务(如果可能的话)。我也不是在寻找
AOP
和作用域bean(常量分配和GC工作,我以前在类似情况下做过分析)


我觉得现在的解决方案可能是一门“失传的艺术”,它可能像会话bean池的适当容器管理(带有依赖项注入)一样简单。诀窍是让容器知道如何管理
g
h
f
中的生命周期,同时在范围更改(例如新请求、新对话)时注入(或变异)所有字段。

假设以某种方式获取配置和上下文,将当前方法设置为private并创建公共便利功能:

public void foo(Request request) {
  Context context = getContext();
  Config config = getConfig();
  foo(context, config, request);
}

假设以某种方式获取配置和上下文,将当前方法设置为private并创建一个公共便利函数:

public void foo(Request request) {
  Context context = getContext();
  Config config = getConfig();
  foo(context, config, request);
}