所以,如果我正确地跟着你(很难知道肯定没有一个代码段),我假设你有这样的事情......
class MyRegion<K, V> extends Region<K, V> {
...
}
则...
@Component
class MyApplicationComponent {
@Autowired
private MyRegion<?, PdxInstance> region;
}
是啊?
所以,问题是,您不能使用@Autowired注入或自动将Region引用连接到应用程序组件中。您必须使用@资源,像这样......
@Component
class MyApplicationComponent {
@Resource(name = "myRegion")
private MyRegion<?, PdxInstance> region;
}
的原因是,春(不分版本),默认情况下,每当autowires“地图”到一个应用程序组件试图创建所有的映射在Spring ApplicationContext中定义的Spring bean。即bean ID/Name - > bean引用。
因此,考虑到...
<bean id="beanOne" class="example.BeanTypeOne"/>
<bean id="beanTwo" class="example.BeanTypeTwo"/>
...
<bean id="beanN" class="example.BeanTypeN"/>
你在你的应用程序组件自动连线地图结束了......
@Autowired
Map<String, Object> beans;
beans.get("beanOne"); // is object instance of BeanTypeOne
beans.get("beanTwo"); // is object instance of BeanTypeTwo
...
beans.get("beanN"); // is object instance of BeanTypeN
那么,什么是你的情况发生的是,根据类型(GemFire's)PdxInstance定义的Spring上下文中没有bean。这是您的(自定义)区域中的数据。因此,当它试图分配Spring上下文中的所有bean或自动装配的(自定义)区域时,Sprig将其标识为“映射”,但不能将其他类型的Bean分配给PdxInstance,并将“Generic”类型考虑在内。
因此,总之,使用@Resource自动装载任何GemFire区域,自定义或其他。
此外,我质疑需要“扩展”GemFire地区。也许最好使用包装(“组合”)。
希望这会有所帮助。
干杯!
请提供相关的代码来复制问题。 –
@Autowired实际上是在工作....但是你的PdxInstance不是一个弹簧管理bean ...你应该发布你的spring配置文件,java类等等以获得帮助 – Pras