Я как бы застрял на проблеме с созданием bean-компонентов, или, вероятно, у меня неправильное намерение ... Может, вы поможете мне решить эту проблему:
У меня есть приложение, которое принимает запросы на пакетную обработку. Для каждой партии мне нужно создать собственный контекст в зависимости от параметров, выдаваемых запросом.
Я попытаюсь просто проверить это следующим примером:
Я получаю запрос на обработку в batch FunctionA, который является реализацией моего интерфейса Function_I и имеет подреализацию FunctionA_DE и FunctionA_AT
Примерно так:
public interface Function_I {
String doFunctionStuff()
}
public abstract class FunctionA implements Function_I {
FunctionConfig funcConfig;
public FunctionA(FunctionConfig funcConfig) {
this.funcConfig = funcConfig;
}
public String doFunctionStuff() {
// some code
String result = callSpecificFunctionStuff();
// more code
return result;
}
protected abstract String callSpecificFunctionStuff();
}
public class FunctionA_DE extends FunctionA {
public FunctionA_DE(FunctionConfig funcConf) {
super(funcConf)
}
protected String callSpecifiFunctionStuff() {
//do some specificStuff
return result;
}
}
public class FunctionA_AT extends FunctionA {
public FunctionA_AT(FunctionConfig funcConf) {
super(funcConf)
}
protected String callSpecifiFunctionStuff() {
//do some specificStuff
return result;
}
}
каким будет Spring-Boot-Way создания экземпляра для FunctionA_DE, чтобы получить его как Function_I для вызывающей части приложения, и как он должен выглядеть, когда я добавляю FunctionB с FunctionB_DE / FunctionB_AT в свои классы ..
Я подумал, что это может быть что-то вроде:
PSEUDO CODE
@Configuration
public class FunctionFactory {
@Bean(SCOPE=SCOPE_PROTOTYPE) // i need a new instance everytime i call it
public Function_I createFunctionA(FunctionConfiguration funcConfig) {
// create Function depending on the funcConfig so either FunctionA_DE or FunctionA_AT
}
}
, и я бы назвал его, автоматически подключив FunctionFactory к моему вызывающему классу и используя его с
someSpringFactory.createFunction(functionConfiguration);
, но я не могу понять это, чтобы создать Prototype-Bean для функции с передачей параметр .. И я действительно не могу найти решение своего вопроса, просматривая SO, но, возможно, я только что получил неправильные поисковые запросы .. Или мой подход к решению этой проблемы, я совершенно неверен (может быть, глуп), никто не решит это методом весенней загрузки, но будет придерживаться фабрик.
Ценю вашу помощь!