Java 调用Spring服务并将参数传递给构造函数
我有一个简单的春季服务:Java 调用Spring服务并将参数传递给构造函数,java,spring,spring-boot,Java,Spring,Spring Boot,我有一个简单的春季服务: @Service public class BinCountryCheckFilterImpl { @Autowired private RiskFilterService riskFilterService; private Terminals terminal; @Autowired public BinCountryCheckFilterImpl(Terminals terminal) {
@Service
public class BinCountryCheckFilterImpl {
@Autowired
private RiskFilterService riskFilterService;
private Terminals terminal;
@Autowired
public BinCountryCheckFilterImpl(Terminals terminal) {
this.terminal = terminal;
}
}
我想从这里呼叫服务:
@Service
public class FilterProcessing {
@Autowired
private BinCountryCheckFilterImpl binCountryCheckFilter;
public PaymentResponse someMetohd(Terminals terminal,
PaymentTransaction message, HttpServletRequest request) throws JAXBException, JsonProcessingException {
switch(.......) {
case ".......":
// send here the args via Contructor
binCountryCheckFilter.validateBinCountryCheckFilter(terminal);
break;
case ".........":
.........
break;
break;
}
}
return null;
}
}
但是我不知道如何通过BinCountryCheckFilterImpl
构造函数发送对象terminal
。
有什么解决方案吗?根据您的代码,我只能猜测terminal是您在运行时收到的对象,而binCountryCheckFilter是在所有Bean初始化阶段构造的。请确定:
terminal
是Spring框架在初始化时提供的一个全局值吗,或者它是方法调用方在运行时提供的每请求值?--由于BinCountryCheckFilterImpl
是一个单例,因此您不应该在字段中存储每个请求的值。请尝试了解您的需求。为什么不能使用终端设置器而不是构造函数参数呢?不应该自动连接bean,因为在运行时会发生更改。它将导致并发问题。@PeterPenzov,这样就回答了您的问题。singleton bean不能将每个请求的值终端作为字段,即构造函数上的参数。terminal
值必须作为方法参数传递,正如您显示的方法调用所示。根据您的代码,我只能猜测terminal是您在运行时收到的对象,而binCountryCheckFilter是在所有Bean初始化阶段构造的。请确定:terminal
是Spring框架在初始化时提供的一次全局值,还是方法调用程序在运行时提供的每个请求值?--由于BinCountryCheckFilterImpl
是一个单例,因此您不应该在字段中存储每个请求的值。请尝试了解您的需求。为什么不能使用终端设置器而不是构造函数参数呢?不应该自动连接bean,因为在运行时会发生更改。它将导致并发问题。@PeterPenzov,这样就回答了您的问题。singleton bean不能将每个请求的值终端作为字段,即构造函数上的参数。terminal
值必须作为方法参数传递,正如您正在显示的方法调用所指示的那样。