0

Java Bean を使用して注入しようとしています。非常に基本的な実装ですが、インジェクションは機能していません。案内していただけますか?

test.java

 public class TempClass{
@Autowired
        HashMap<String,HashMap<String,String>> newMap = new HashMap<String,HashMap<String,String>>();


        public void setNewMap(HashMap<String, HashMap<String,String>> newMap)
        {
            newMap= newMap;
        }

        public HashMap<String, HashMap<String,String>> getNewMap()
        {
            return newMap;
        }
    }

また:私のBean設定conn.xmlの場合

       <?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
    xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">

    <util:map id="xyz" map-class="java.util.HashMap">
        <entry key="x" value-ref="x" />
        <entry key="y" value-ref="y" />
        <entry key="z" value-ref="z" />
    </util:map>

    <util:map id="x" map-class="java.util.HashMap">
        <entry key="xx" value="xx" />
        <entry key="xy" value="xy" />
        <entry key="xz" value="xz" />
    </util:map>

    <util:map id="y" map-class="java.util.HashMap">
        <entry key="yx" value="yx" />
        <entry key="yy" value="yy" />
        <entry key="yz" value="yz" />
    </util:map>

    <util:map id="z" map-class="java.util.HashMap">
        <entry key="zx" value="zx" />
        <entry key="zy" value="zy" />
        <entry key="zz" value="zz" />
    </util:map>

 <bean id="bean123" class="reference.to.class" autowire="byName">
      <property name="newMap" ref="xyz" />
   </bean>

</beans>

誰かが私に何が悪いのか教えてもらえますか?

4

2 に答える 2

1

@Autowired アノテーションは、注入するフィールドの上にある必要があります。そして、そのフィールドを宣言するだけで割り当てるべきではありません。

また、マップの挿入は、最初から最も簡単な例ではありません。コツをつかむためだけに、より単純なテスト ケースを作成する必要があります。例えば、

package test;
public class SpringInjectionTest {
    @Autowired
    private String injectThis;

    public void setInjectThis(String s) {
         injectThis = s;
    }

    public String getInjectThis() {
         return injectThis;
    }
}

そして、ここに applicationContext があります:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-2.5.xsd">

    <context:annotation-config />   

    <bean id="testBean" class="test.SpringInjectionTest" autowire="byName"/>
</beans>
于 2013-09-11T21:27:00.880 に答える