Я хочу создать разные экземпляры Bean для разных локалей в моей программе, но я не слишком много знаю о механизме определения области действия в Spring CDI.Как scope-proxy определяет, какой прокси-целевой объект следует перенаправить, если одновременно используются два экземпляра одного и того же bean-объекта в области запроса?
Я могу получить предпочтение Locale из запроса http, а затем яхочу получить правильный бин в этой конкретной локали.Вместо того, чтобы использовать область «прототип», Locale-scope создаст только несколько экземпляров только для используемых локалей.Лично я хочу что-то подобное по-своему:
@Component
@Scope("locale")
class MyService {
@Inject
@Named("scope-invariant")
public MyService(Locale locale) {
ResourceBundle nls = getResourceBundle(..., locale);
// ...
}
}
@Controller
class MyController {
void service(HttpServletRequest req, HttpServletResponse resp) {
UserPreference userPreference = getUserPreference(req, res.getSession(), ...);
Locale userLocale = userPreference.getUserLocale();
applicationContext.doInScope(
new ScopeBinding("locale", userLocale),
new ScopedCallback() {
@Inject
MyService service;
void execute() {
// ...
}
});
}
}
Ну, это явно не работает.
Есть идеи?