Ich benutze Spring Boot und Java-Konfigurationen, aber @autowired
scheint nicht zu funktionieren. Ich bekomme eine NPE, ich habe andere Fragen in SO überprüft, aber ich kann nicht den Grund sehen, warum dieses Verhalten. Es folgt mein Code: -Spring Boot Autowired Nullzeiger Ausnahme
package com.bhargo;
//skipping imports
@SpringBootApplication
public class Main implements CommandLineRunner {
@Autowired
private BuilderFactory builderFactory;
@Autowired
private LinksBuilder linksBuilder;
private final static File fileDir = new File("D:\\ml-20m");
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
@Override
public void run(String... args) throws Exception {
Main main = new Main();
main.getFiles();
}
private void getFiles() {
Builder[] builder = new Builder[1];
Arrays.stream(fileDir.listFiles()).filter(n -> !n.getName().contains("txt") /*&& n.getName().contains("links")*/)
.forEach(f ->{
//builder factory is NULL
builder[0] = builderFactory.getBuilderFor(f.getName());
....
....
@Bean
public BuilderFactory builderFactory() {
BuilderFactory builderFactory = new BuilderFactory();
Map<String, Builder> map = new HashMap<>();
map.put("genome-scores.csv",genomeScoreBuilder());
map.put("genome-Tags.csv",genomeTagBuilder());
map.put("links.csv", linksBuilder());
map.put("movies.csv", movieBuilder());
map.put("ratings", ratingBuilder());
map.put("tags.csv", tagBuilder());
builderFactory.setBuilderMap(map);
return builderFactory;
}
Die BuilderFactory Klasse: -
package com.bhargo.model.builder;
import com.bhargo.Builder;
import java.util.Map;
public class BuilderFactory {
private Map<String, Builder> builderMap;
public BuilderFactory() {
}
public Map<String, Builder> getBuilderMap() {
return builderMap;
}
public void setBuilderMap(Map<String, Builder> builderMap) {
this.builderMap = builderMap;
}
public Builder getBuilderFor(String fileName) {
return builderMap.get(fileName);
}
}
Können Sie verschieben @Bean öffentliche BuilderFactory BuilderFactory() {'Methode vor' @Autowired private BuilderFactory BuilderFactory; 'Member-Variable in Hauptklasse und versuchen? – harshavmb
funktioniert nicht !!!!! –
okies, haben Sie Sysout-Anweisung in '@Bean öffentlichen BuilderFactory BuilderFactory() {' -Methode setzen und überprüft, ob Sie in der Lage sind, die Elemente in der Karte zu drucken? Dies sollte zeigen, ob die Bean instanziiert ist oder nicht. – harshavmb