1
私はスプリングブートとjava configsを使用していますが、@autowired
は動作していません。 私はNPEを取得しているので、私は他の質問を調べましたが、この動作がなぜ発生するのかわかりません。私のコードを以下に示します。 -スプリングブートautowired nullポインタ例外
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クラス: - あなたは「
Main main = new Main();
春はdoesnの次の行のように、クラス自身のインスタンスを作成
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 公共BuilderFactory builderFactory(){ ''メソッド@Autowired プライベートBuilderFactory builderFactory前を移動することはできますか? – harshavmb
は動作しません!!!!! –
okies、 '@Bean public BuilderFactory builderFactory(){'メソッドにsysout文を入れて、マップに要素を出力できるかどうかチェックしましたか?これは、Beanがインスタンス化されているかどうかを示すはずです。 – harshavmb