У меня есть приложение Java EE + Spring, которое предпочитает аннотации конфигурации XML. У bean-компонентов всегда есть прототип.
В моем приложении теперь есть бизнес-правила, которые зависят от страны, из которой был сделан запрос пользователя. Итак, у меня было бы что-то вроде этого (имейте в виду, что этот пример был сильно упрощен):
@Component
public class TransactionService {
@Autowired
private TransactionRules rules;
//..
}
@Component
@Qualifier("US")
public class TransactionRulesForUS implements TransactionRules {
//..
}
@Component
@Qualifier("CANADA")
public class TransactionRulesForCanada implements TransactionRules {
//..
}
Я искал способ заставить механизм автоматического подключения автоматически вводить правильный bean-компонент (в данном примере из США или Канады) на основе по стране текущего запроса. Страна будет храниться в переменной ThreadLocal и будет меняться при каждом запросе. Также будет глобальный класс для всех стран, у которых нет своих особых правил.
Думаю, мне придется настроить способ, которым Spring решает, как создавать объекты, которые он будет внедрять. Я нашел единственный способ сделать это - использовать FactoryBean, но это не совсем то, на что я надеялся (недостаточно общий). Я надеялся сделать что-то вроде этого:
На правильном ли я пути? Есть у меня идеи по этому поводу?
Спасибо.