成功注入Spring bean的NullPointerException

时间:2013-07-01 10:41:16

标签: java spring properties

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

    @Autowired
    private Properties properties;

给了我这个错误:No qualifying bean of type [java.util.Properties] is defined: expected single matching bean but found 2: csvHeaderProperties,systemProperties

当我使用资源注入属性时,我没有得到任何错误,一切似乎都很好:

@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);
        }
}

两个文件都位于同一个包中。 这段代码有问题吗?

3 个答案:

答案 0 :(得分:0)

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

如果有两个或更多可能的注射匹配,则必须命名。

答案 1 :(得分:0)

您应该使用@Named annotation

这是一个例子

@Named("userDAO")
public class EfaUserDAOImpl

并将其注入您需要的地方;

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

答案 2 :(得分:0)

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