J'ai un problème lors de l'implémentation de la solution neo4j Graphaware. Auparavant, je créais l'objet GraphDatabaseService comme suit -Initialiser d'autres variables de la variable @Context injectée
public class TimetreeUtil {
public static GraphDatabaseService db;
public static SingleTimeTree st;
public static TimeTreeBackedEvents ttbe;
public static TimeTreeBusinessLogic ttbl;
public static TimedEventsBusinessLogic tebl;
public static List<Event> eventsFetchedFromTimetree;
public TimetreeUtil() {
db = new GraphDatabaseFactory().newEmbeddedDatabase(new File("..."));
st = new SingleTimeTree(db);
ttbl = new TimeTreeBusinessLogic(db);
ttbe = new TimeTreeBackedEvents(st);
tebl = new TimedEventsBusinessLogic(db, ttbe);
}
}
Cela fonctionnait correctement. Comme vous pouvez le voir, GraphDatabaseService, SingleTimeTree, TimeTreeBackedEvents, TimeTreeBusinessLogic et TimedEventsBusinessLogic sont tous statiques et devraient l'être, car neo4j le demande.
Mais maintenant, notre architecture a changé et nous injectons la GraphDatabaseService par -
@Context
public GraphDatabaseService db;
Alors maintenant, regarde la classe comme -
public class TimetreeUtil {
@Context
public GraphDatabaseService db;
public static SingleTimeTree st;
public static TimeTreeBackedEvents ttbe;
public static TimeTreeBusinessLogic ttbl;
public static TimedEventsBusinessLogic tebl;
public static List<Event> eventsFetchedFromTimetree;
public TimetreeUtil() {
st = new SingleTimeTree(db);
ttbl = new TimeTreeBusinessLogic(db);
ttbe = new TimeTreeBackedEvents(st);
tebl = new TimedEventsBusinessLogic(db, ttbe);
}
}
La classe aide Timetree est simplement la création d'un objet de la la classe TimetreeUtil par TimetreeUtil util = new TimetreeUtil();
puis en appelant une méthode de TimetreeUtil.
Je suppose que, au moment où le constructeur est appelé, db aurait déjà été initialisé, mais ce n'est pas le cas. db est nulle et donc st = new SingleTimeTree(db);
donne NPE.
Comment puis-je rencontrer les deux extrémités se rencontrent? Merci.
db sera initialisé lorsque vous appelez la procédure, ce qui fait la le code appelant la procédure ressemble à? –
Salut @ChristopheWillemsen, merci pour votre réponse! J'ai modifié mon message original pour montrer plus clairement ce qui se passe. Merci. –