如何自动连接接受两个字符串的 class' 构造函数

How to auto-wire a class' constructor that accepts two string

我一直在尝试弄清楚如何自动连接接受两个字符串的 class 的构造函数。现在这就是我所拥有的。

这是class:

public class Indexer {

    private String isbn;
    private String environment;

    //Getters and Setters here...

    @Autowired
    public Indexer(String isbn, String environment) {
        this.isbn = isbn;
        this.environment = environment;
    }
}

那么就是这个配置class

@Configuration
public class Config {

    @Bean
    public Indexer indexer() {
        //dunno what to do
    }
}

但我卡在了这一部分。变量 isbnenvironment 将来自具有两个请求参数 isbnenvironment 的控制器。有点像这样:

@Controller
public class ContentController {

    @Autowired
    Indexer index;

    public void reindex(String isbn, String environment) {
        index.somefunction();
    }
}

它不是这样工作的,spring 在应用程序启动时自动装配,而您正试图在应用程序运行时自动装配。

虽然不清楚是谁调用了 public void reindex(String isbn, String environment) 方法。也许您应该重写索引器,使其获得 isbnenvironment 作为参数:

class Indexer {
    public void someFunction(String isbn, String envrionment) {
       ...
    }
}

class ContentController {
   @Autowired Indexer indexer;

    public void reindex(String isbn, String environment) {
        index.somefunction(isbn, environment);
    }
}