Сначала создайте метод-производитель, который @Produces
будет иметь String
-типовое url
значение (возможно, создайте аннотацию квалификатора @URL
для дальнейшей его идентификации). Произведите это в @Dependent
объеме. Что-то вроде:
@Produces @Dependent @URL private static final String produceUrl() {
return UrlFactory.getNewUrl();
}
Теперь, где бы кто-нибудь ни делал @Inject @URL private String url
, он получит новое String
представление URL-адреса от вашего UrlFactory
.
Что еще важнее, в любое время, когда кто-то это сделает @Inject @URL private Provider<String> urlProvider;
они получат Provider
, чей метод get()
при вызове вернет самое последнее и наибольшее значение URL.
Это может быть все, что вам нужно, если вы посмотрите на него правильно.
Если это не все, что вам нужно, то заставьте BeanA
сделать это:
@Inject
@URL
private Provider<String> urlProvider;
… и затем в его (опущенном выше) getUrl()
методе сделать это:
public String getUrl() {
return this.urlProvider.get();
}
Каждый раз вы будете получать новый String
.
Если вы сделали , то , тогда вы можете просто добавить BeanA
в свой метод наблюдателя и получить его передал вам:
private static final void onEvent(@Observes final YourEvent event, final BeanA beanA) {
final String url = beanA.getUrl(); // latest and greatest
}