如何自动连接接受两个字符串的 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
}
}
但我卡在了这一部分。变量 isbn
和 environment
将来自具有两个请求参数 isbn
和 environment
的控制器。有点像这样:
@Controller
public class ContentController {
@Autowired
Indexer index;
public void reindex(String isbn, String environment) {
index.somefunction();
}
}
它不是这样工作的,spring 在应用程序启动时自动装配,而您正试图在应用程序运行时自动装配。
虽然不清楚是谁调用了 public void reindex(String isbn, String environment)
方法。也许您应该重写索引器,使其获得 isbn
和 environment
作为参数:
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);
}
}
我一直在尝试弄清楚如何自动连接接受两个字符串的 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
}
}
但我卡在了这一部分。变量 isbn
和 environment
将来自具有两个请求参数 isbn
和 environment
的控制器。有点像这样:
@Controller
public class ContentController {
@Autowired
Indexer index;
public void reindex(String isbn, String environment) {
index.somefunction();
}
}
它不是这样工作的,spring 在应用程序启动时自动装配,而您正试图在应用程序运行时自动装配。
虽然不清楚是谁调用了 public void reindex(String isbn, String environment)
方法。也许您应该重写索引器,使其获得 isbn
和 environment
作为参数:
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);
}
}