有没有办法自动装配需要经常重新实例化的对象?
我正在使用 Netflix 的 DGS + spring boot 框架,并且基本上将用户身份验证详细信息存储在为每个请求创建的自定义上下文中。由于需要大量重构,我试图避免将上下文添加到方法签名中。
例如
public Result dataFetcher(DataFetchingEnvironment dfe) {
// this context contains user details which is used for authorization
// instantiated for every request
setRolesInContext(dfe);
MyCustomContext context = DgsContext.getCustomContext(dfe);
// trying to avoid adding context as an extra param e.g. dataFetcherHelper(context)
dataFetcherHelper(); // this calls other helper methods from other classes
}
我正在考虑使用外观模式,但这不是线程安全的。基本上自动装配RequestContextHolder
, 并在setRequestContext
每次初始化新上下文时调用。
@Component
@NoArgsConstructor
@Getter
@Setter
public class RequestContextHolder {
private RequestContext requestContext;
}