Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring引导自动连线空指针异常_Java_Spring Boot_Nullpointerexception_Autowired - Fatal编程技术网

Java spring引导自动连线空指针异常

Java spring引导自动连线空指针异常,java,spring-boot,nullpointerexception,autowired,Java,Spring Boot,Nullpointerexception,Autowired,我使用的是spring boot和java配置,但是autowired似乎不起作用。 我得到了NPE,我已经检查了其他问题,所以我看不出这种行为的原因。以下是我的代码:- package com.bhargo; //skipping imports @SpringBootApplication public class Main implements CommandLineRunner { @Autowired private B

我使用的是spring boot和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;
    }
package com.bhargo;
//跳过导入
@SpringBoot应用程序
公共类Main实现CommandLineRunner{
@自动连线
私人建筑厂建筑厂;
@自动连线
私人LinksBuilder LinksBuilder;
私有最终静态文件fileDir=新文件(“D:\\ml-20m”);
公共静态void main(字符串[]args){
SpringApplication.run(Main.class,args);
}
@凌驾
公共无效运行(字符串…参数)引发异常{
Main Main=新Main();
main.getFiles();
}
私有void getFiles(){
建筑商[]建筑商=新建筑商[1];
Arrays.stream(fileDir.listFiles()).filter(n->!n.getName().contains(“txt”)/*&&n.getName().contains(“links”)*/)
.forEach(f->{
//生成器工厂为空
builder[0]=builderFactory.getbuilder(f.getName());
....
....
@豆子
公共BuilderFactory BuilderFactory(){
BuilderFactory BuilderFactory=新的BuilderFactory();
Map Map=newhashmap();
map.put(“genomescores.csv”,genomeScoreBuilder());
map.put(“genome Tags.csv”,genomeTagBuilder());
map.put(“links.csv”,linksBuilder());
map.put(“movies.csv”,movieBuilder());
map.put(“评级”,ratingBuilder());
map.put(“tags.csv”,tagBuilder());
builderFactory.setBuilderMap(地图);
返回建设者工厂;
}
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);
    }
}
package com.bhargo.model.builder;
导入com.bhargo.Builder;
导入java.util.Map;
公共类构建器工厂{
私有地图生成器;
公共建筑工厂(){
}
公共映射getBuilderMap(){
返回构建器映射;
}
公共无效setBuilderMap(地图构建器Map){
this.builderMap=builderMap;
}
公共生成器getBuilderFor(字符串文件名){
返回builderMap.get(文件名);
}
}

当您自己创建一个类的实例时,如下图所示

Main main = new Main();
Spring不知道该实例,自动布线也不起作用。 在你的情况下,只要排队就行了

this.getFiles();

在run方法中应该足够了。

当您自己创建一个类的实例时,如以下行所示

Main main = new Main();
Spring不知道该实例,自动布线也不起作用。 在你的情况下,只要排队就行了

this.getFiles();

在run方法中应该足够了。

您可以移动
@Bean public BuilderFactory BuilderFactory()吗{
方法在
@Autowired private BuilderFactory BuilderFactory之前;
主类中的成员变量并重试?不起作用!!!!!okies,您是否已在
@Bean public BuilderFactory BuilderFactory()中放入sysout语句{
方法并检查您是否能够打印映射中的元素?这应该可以告诉您bean是否已实例化。是的,我之前进行了此调试,该方法在启动期间被调用,映射也被填充为什么您要创建自己的Main实例(
Main=new Main();
)?如果一个类不是由Spring管理的,自动连接将不起作用。您可以移动
@Bean public BuilderFactory BuilderFactory()吗{
方法在
@Autowired private BuilderFactory BuilderFactory之前;
主类中的成员变量并重试?不起作用!!!!!okies,您是否已在
@Bean public BuilderFactory BuilderFactory()中放入sysout语句{
方法并检查您是否能够打印映射中的元素?这应该可以告诉您bean是否已实例化。是的,我之前进行了此调试,该方法在启动期间被调用,映射也被填充为什么您要创建自己的Main实例(
Main=new Main();
)?如果一个类不是由Spring管理的,自动连线将不起作用。