Wie kann die Feder Umgebung injiziert werden richtig in einer Methode aber nicht eine andere?
neo4jDatabase()
ist gut, aber environment
ist immer null, in graphDatabaseService()
... wie/warum?
@Configuration
@PropertySource("classpath:/neo4j.properties")
@EnableNeo4jRepositories("reservation.repository.neo4j")
public class Neo4jConfig extends Neo4jConfiguration {
@Inject
Environment environment;
@Bean(initMethod = "setupDb")
public Neo4jDatabase neo4jDatabase() {
//Environment fine here...
return new Neo4jDatabase(this.environment.getProperty("data.file.path"));
}
@Bean(destroyMethod = "shutdown")
public GraphDatabaseService graphDatabaseService() {
if (environment == null) {
//Always gets here for some reason...why?
return new EmbeddedGraphDatabase("/Temp/neo4j/database");
} else {
return new EmbeddedGraphDatabase(this.environment.getProperty("database.path"));
}
}
}
Versionen:
Spring 3.2.0.RELEASE, spring-data-neo4j 2.1.0.RELEASE.
- Hallo, haben Sie versucht, für die Verwendung von 'dieser' in der null-check? "wenn (dies.Umgebung == null)". Indem wir dies tun, werden Sie Spiel die anderen Nutzungen des Objekts in Ihrer Klasse. Einmal synchronisiert, können Sie beginnen, zu entwirren das problem (z.B. mit Spring 3.1).
- Ist dieser code in einer web-app? Sind Sie sicher, dass Ihr nicht einen Fall, dass zwei anwendungskontexte, eins mit der Umgebung konfiguriert ist und einer nicht?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Falls jemand das gleiche Problem - die folgenden arbeitete für mich:
HINWEIS: ich bin NICHT erweitern Neo4jConfiguration. Es ist einfach tuns in eine spaghetti von Autowired Abhängigkeiten mit der Umgebung eine member-variable nie gesetzt, durch die Zeit, es ist erforderlich für die Initialisierung der graphDatabaseService. Sie kann get it to work mit einem
@PostConstruct
aber Sie am Ende mit einem Bündel vonNotInTransactionException
's. Ich hatte keine Zeit, tief in sich, warum Sie stattdessen in Ihrem Haupt-AppConfig-Klasse, die Sie einfach importieren Sie Ihre eigene Neo4j sowohl die Konfiguration ALS AUCH die base abstrakte Neo4j-Konfiguration-Klasse. Im wesentlichen, du machst im code, was die XML-Konfiguration tun würde.Die Antwort von mwielbut ist teilweise richtig, aber es ist nicht 100% ausreichend, da würde man schon angeben, das Basispaket für die domain-Klassen sowie.