Momentan habe ich ein großes Problem mit CDI, wenn ich ein neues Objekt anhand ihrer Annoteitons erstellen möchte.Äquivalent von @Configurable für CDI JavaEE 7
Mit Reflektionen habe ich alle Klassen mit '@Connector' versehen. Danach erstelle ich für jede Klasse ein neues Objekt. Dies funktioniert gut, aber ich möchte einen ServiceHandler in die Objekte injizieren, die versuchen, es über '@Inject' zu injizieren. Das Problem hier ist, dass CDI diese Objekte nicht kennt und sie nicht injizieren kann. Zur Zeit habe ich einen Workaround, um dieses Problem zu lösen, aber das ist nicht wirklich schön. Ich bin neu bei CDI und suche nach einer Entsprechung der Annotation "@Configurable" von Spring.
private Set<ApiDao> determineApiDaos() {
Set<Class<?>> classes = new Reflections("###packageName###").getTypesAnnotatedWith(Connector.class);
return FluentIterable.from(classes)
.transform(CLASS_TO_API_DAO_FUNCTION)
.filter(Predicates.notNull())
.toSet();
}
private ApiDao instantiateApiDao(Class apiDao) {
try {
ApiDao newApiDao = (ApiDao) apiDao.newInstance();
newApiDao.setConfigurationService(configurationService); // Workaround inject service during creation
return newApiDao;
} catch (Exception e) {
LOG.error("Could not initialize Connector.", e);
return null;
}
}
Können Sie ein bisschen mehr erklären - warum weiß CDI nicht über diese Klassen? –