Исходя из фона Guice, я знаю, что можно посеять значение объекта из области, используя.
scope.seed(Key.get(SomeObject.class), someObject);
Я предполагаю, что это можно было бы сделать, зарегистрировав Bean-компонент, который получает значение из AbstractBoundContext
, но трудно найти примеры, просто задающие одно значение из Custom Scope. Как создать настраиваемую область, которая задает значение, которое можно внедрить в другом месте?
Редактировать: в настоящее время я использую следующий обходной путь, который можно внедрить в перехватчик, чтобы установить Configuration
при входе в область действия, а затем можно внедрить через локальный поставщик потока. Я все еще ищу варианты, которые кажутся менее хакерскими / более интегрированными с системой контекста области/области в Weld.
@Singleton
public class ConfigurationProducer {
private final InheritableThreadLocal<Configuration> threadLocalConfiguration =
new InheritableThreadLocal<>();
@Produces
@ActiveDataSet
public ConfigurationConfiguration() {
return threadLocalConfiguration.get()
}
public void setConfiguration(Configuration configuration) {
threadLocalConfiguration.set(configuration);
}
}
@TenantScoped
, где@TenantScoped EntityManger
привязан к провайдеру, который используетEntityManagerFactory
, настроенный для этого арендатора. Поэтому при входе в область мне нужно иметь возможность передать ссылку на объект, которая позже может быть введена с помощью определенного ключа/квалификатора. - person Jan-Willem Gmelig Meyling   schedule 18.07.2016