java - Spring 的 @Autowired 没有注入(inject) Map - 我是否正确使用它?

标签 java spring autowired

我正在尝试向现有实用程序类添加一些 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/

相关文章:

java - 导入自定义 Android 库时出现 transformClassesWithDesugarForDebug 构建错误

java - 聊天客户端未连接到服务器

java - 无法解析配置类,Spring

java - 在运行时排除 Spring 配置文件的故障

java - Spring STOMP 从应用程序中的任何地方发送消息

java - ArrayList<Short> 指向 ShortBuffer (java)

java - spring @Autowire 属性与 setter

java - 使用@Autowired 和 AUTOWIRE_BY_TYPE 有什么区别?

spring - @Autowired 验证器内的 DAO

java - Spring AOP Autowiring 异常