我正在尝试使用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);
}
}
两个文件都位于同一个包中。 这段代码有问题吗?
答案 0 :(得分:0)
Spring应如何推断插入哪一个?
如果有两个或更多可能的注射匹配,则必须命名。
答案 1 :(得分:0)
您应该使用@Named annotation
这是一个例子
@Named("userDAO")
public class EfaUserDAOImpl
并将其注入您需要的地方;
@Inject
private @Named("userDAO")
EfaUserDAO userDAO;
答案 2 :(得分:0)
我发现了错误:它是在另一个我没有注入DynCSVService的文件中,我使用了默认的构造函数。