我正在尝试向现有实用程序类添加一些 Spring 配置。它似乎不起作用,我不确定为什么(我第一次使用这些 Spring 选项,我什至不确定我做得是否正确)。
相关类
@Configurable(autowire=Autowire.BY_NAME, preConstruction=true)
public class DataUtility
{
private static final DataUtility INSTANCE = new DataUtility();
@Autowired(required=true) //This is the new field and annotation
private Map<String,String> dataFileMapping = new HashMap<String, String>();
public static DataUtility getInstance()
{
return INSTANCE;
}
private DataUtility()
{
//Do a bunch of setup work here
for (String s : dataFileMapping)
{
addDataToCache(dataFileMapping(s))
}
}
spring 配置如下所示:
<context:annotation-config/>
<context:spring-configured/>
<bean id="util" class="com.myCompany.DataUtility">
<property name="dataFileMapping">
<map>
<entry key="data1" value="data/file1.dat"/>
<entry key="data2" value="data/file2.dat"/>
<entry key="data3" value="data/file3.dat"/>
</map>
</property>
</bean>
问题是,当我在调试器中单步执行代码时,我可以看到 dataFileMapping
为空。我什至不确定 spring 配置是否正在运行。
最佳答案
我认为你只需要为 dataFileMapping 添加 getter 和 setter
另外,请记住,您无法在构造函数中迭代映射,在构造函数执行之前,spring 没有机会设置它。
除此之外,您不能将构造函数设为私有(private)并期望 spring 能够实例化它。
关于java - Spring 的 @Autowired 没有注入(inject) Map - 我是否正确使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13634345/