1
我使用的是spring引導和java配置,但是@autowired
似乎不起作用。 我得到一個NPE,我檢查了其他問題,但我不能看到這種行爲的原因。以下是我的代碼: -春季開機自動佈線空指針異常
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;
}
的BuilderFactory類: -
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);
}
}
你可以移動'@Bean public BuilderFactory builderFactory(){'''在'@Autowired private BuilderFactory builderFactory;'Main類中的成員變量之前的方法並嘗試? – harshavmb
不起作用!!!!! –
好吧,你有沒有把sysout語句放在'@Bean public BuilderFactory builderFactory(){'方法中,並檢查你是否能夠在地圖中打印元素?這應該告訴bean是否被實例化。 – harshavmb