我想在Spring中为bean的内部表示添加额外的属性。有可能吗?如果有机制,应该采用什么机制?我的目标是为我的框架定义我自己的bean。我可以从头开始做,也可以重用Spring机制。
发布于 2017-04-04 21:27:50
您可以查看文档Container Extension Points。
要实现自定义,您可以创建:
在bean实例上操作的
BeanPostProcessor bean。例如,这允许创建一个自定义的bean注册表,转到可以操作bean元数据的proxify...BeanFactoryPostProcessor。这允许for overriding or adding properties even to eager-initializing beans在修改类时...可以在注册表初始化后立即运行的BeanDefinitionRegistryPostProcessor。这允许创建、删除或更新beans definitions.例如,您可以创建一个新的BeanDefinitionRegistryPostProcessor,它将使用BeanDefinition的自定义实现来注册(或修改)bean,该实现将包含基于例如您自己的注释的自定义属性。
你能详细说明一下你的框架想要达到什么目的吗?
发布于 2017-04-06 02:55:22
谢谢你,尼古拉斯:)
我会研究你的答案和你提供的文档。我已经找到了你提到的*后处理器,但我不确定这是否是正确的地方,以及它们的定制的性质(子类化或其他)以及后果是什么。我的问题并不像我说的那么简单(不仅仅是添加一个属性)--扩展的Spring bean也应该与Spring+AspectJ (而不是SpringAOP)协作使用,特别是在使用声明父级结构的时候。我也希望能够为重新定义的bean创建代理。我会让你知道我的调查结果是什么,也许我会问一些问题。
给你们所有人的答案:我的框架致力于在运行时定义图形建模语言(元模型)(是OMG标准的远扩展),我正在寻找JVM中当前对象表示引入的局限性的解决方案,它促进了行为而不是结构。这是几种方法中的一种,但由于相对较小的工作量,这对我来说是最有前景的。
https://stackoverflow.com/questions/43207956
复制相似问题