Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调用Spring服务并将参数传递给构造函数_Java_Spring_Spring Boot - Fatal编程技术网

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
值必须作为方法参数传递,正如您正在显示的方法调用所指示的那样。