1

我正在尝试将属性文件与 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);
        }
}

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

4

3 回答 3

0

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

如果有两个或多个可能的注入匹配项,则必须为其命名。

于 2013-07-01T10:49:02.360 回答
0

您应该使用 @Named 注释

这是一个例子

@Named("userDAO")
public class EfaUserDAOImpl

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

@Inject
private @Named("userDAO")
EfaUserDAO userDAO; 
于 2013-07-01T10:57:59.963 回答
0

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

于 2013-07-01T11:01:08.100 回答