Je crée une étendue personnalisée CDI et j'utilise le BeanManager
pour obtenir une injection de ma classe personnalisée NavigationHandler
. Mais les fèves retournées sont assez étranges.BeanManager renvoie toujours la même référence
J'utiliser le BeanManager cette façon:
public class ScreenContext implements Context
{
private NavigationHandler getNavigationHandler()
{
final Set<Bean<?>> beans = m_beanManager.getBeans(NavigationHandler.class);
final Bean<?> bean = m_beanManager.resolve(beans);
NavigationHandler reference =
(NavigationHandler) m_beanManager.getReference(bean, NavigationHandler.class,
m_beanManager.createCreationalContext(bean));
System.out.println("Found "+reference+" (hash="+reference.hashCode()+")");
return reference;
}
...
}
je pense, quand j'utiliser mon projet avec deux navigateurs différents, pour obtenir deux différents NavigationHandler
, qui sont définies ainsi:
@Named
@WindowScoped
public class NavigationHandler
implements Serializable, INavigationHandlerController
Mais mon débogueur renvoie true
lorsque je teste reference1==reference2
. Je reçois aussi des codes de hachage étranges:
Found [email protected] (hash=1261587818)
Found [email protected] (hash=1261587818)
Je ne comprends pas pourquoi les hash utilisés dans le toString() sont différentes, mais le hachage utilisé dans hashCode() sont les mêmes.