Springプロファイル注入変数nullソリューション
2548 ワード
<bean id="targetCommentsAutoReplyBiz" class="com.yododo.biz.micro.autoReply.impl.TargetCommentsAutoReplyBizImpl">
<property name="autoreplyContentReplaceMap">
<map>
<entry key="areaname">
<bean class="com.yododo.biz.micro.autoReplyMode.impl.AreaNameReplaceBizImpl"></bean>
</entry>
</map>
</property>
</bean>
<bean id="autoreplyLogBiz" class="com.yododo.biz.micro.impl.AutoreplyLogBizImpl">
<property name="autoReplyMap">
<map>
<entry key="targetComments">
<ref bean="targetCommentsAutoReplyBiz"/>
<bean class="com.yododo.biz.micro.autoReply.impl.TargetCommentsAutoReplyBizImpl"></bean>
</entry>
</map>
</property>
</bean>
元のコードは上記のように、comに注入する.yododo.biz.micro.impl.AutoreplyLogBizImplのautoReplyMapのTargetCommentsAutoReplyBizImplのautoreplyContentReplaceMapはnullです.
解析理由:autoreplyLogBizにautoReplyMapを注入してautoReplyMapを初期化したとき、TargetCommentsAutoReplyBizImplオブジェクトはspringコンテナから取得されず、1つのオブジェクトを再newし、もちろん再new TargetCommentsAutoReplyBizImplのautoreplyContentReplaceMapではありませんので..
次のように構成された解決策です.
<bean id="targetCommentsAutoReplyBiz" class="com.yododo.biz.micro.autoReply.impl.TargetCommentsAutoReplyBizImpl">
<property name="autoreplyContentReplaceMap">
<map>
<entry key="areaname">
<bean class="com.yododo.biz.micro.autoReplyMode.impl.AreaNameReplaceBizImpl"></bean>
</entry>
</map>
</property>
</bean>
<bean id="autoreplyLogBiz" class="com.yododo.biz.micro.impl.AutoreplyLogBizImpl">
<property name="autoReplyMap">
<map>
<entry key="targetComments">
<ref bean="targetCommentsAutoReplyBiz"/>
</entry>
</map>
</property>
</bean>