Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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 成功注入Springbean上的NullPointerException_Java_Spring_Properties - Fatal编程技术网

Java 成功注入Springbean上的NullPointerException

Java 成功注入Springbean上的NullPointerException,java,spring,properties,Java,Spring,Properties,我正在尝试使用Spring的属性文件。文件注入工作正常,我可以访问我的bean。 例如,此代码 @Autowired private Properties properties; 给我这个错误:没有定义[java.util.Properties]类型的合格bean:需要单个匹配bean,但找到了2:csvHeaderProperties,systemProperties 当我使用resource注入属性时,我没有得到任何错误,而且一切看起来都很好: @Component pub

我正在尝试使用Spring的属性文件。文件注入工作正常,我可以访问我的bean。 例如,此代码

    @Autowired
    private Properties properties;
给我这个错误:没有定义[java.util.Properties]类型的合格bean:需要单个匹配bean,但找到了2:csvHeaderProperties,systemProperties

当我使用resource注入属性时,我没有得到任何错误,而且一切看起来都很好:

@Component
public Class MyClass {

    @Resource(name="csvHeaderProperties")
    private Properties properties;
}
但是,此代码为我提供了一个NPE:

@Component
public class DynCSVService {

    @Autowired
    private DynCSVDictionnary headerDico;

    public void processFile() {
        System.out.println(headerDico);
        }
}
这两个文件位于同一个包中。
这段代码有什么问题吗?

Spring应该如何推断插入哪一个


如果有两个或更多可能的匹配项可供注入,则必须命名它

您应该使用@Named注释

这里有一个例子

@Named("userDAO")
public class EfaUserDAOImpl
在你需要的地方注射

@Inject
private @Named("userDAO")
EfaUserDAO userDAO; 

我发现了错误:它在另一个文件中,我没有注入DynCSVService,而是使用了默认构造函数