当前位置: 首页 > 知识库问答 >
问题:

将带有父级的XMLBean定义转换为带有注释的Java

韦衡
2023-03-14

我有一个使用框架的应用程序,该框架通过框架中的XML文件提供某些SpringBean。我的应用程序的配置目前部分使用XML完成,但大部分使用Spring注释。

一些XMLBean定义的父项引用框架提供的bean,例如。

<bean id="MyBean" parent="FrameworkBean">
    <property name="context">
        <map merge="true">
            <entry key="SomeKey" value-ref="SomeValue" />
        </map>
    </property>
</bean>

FramwworkBean在框架中的XML文件中定义。有一个豆子传承的链条。在每个步骤中,一些条目被添加到上下文中:

<bean id="FrameworkBean" parent="AbstractBean">
   <map merge="true">...

<bean id="AbstractBean" abstract="true" class="ClassWithContext"/>

我知道这一切的结果是构造一个ClassWithContext实例,该实例带有一个包含链上所有条目的映射。是否可以编写Java代码来执行同样的操作,而不复制框架XML文件中的代码?

@Bean("MyBean") ClassWithContext myBean() {
    return ??? // code that uses "FrameworkBean" somehow
}

XMLbean定义不依赖于AbstractBean的类型。如果MyBean可以由Java代码创建,那么该代码可以被写成同样与类型无关吗?或者我应该把它留在XML中?

共有1个答案

熊嘉茂
2023-03-14

如果“FrameworkBean”不是抽象bean,则可以尝试以下操作:

@Bean
public SomeType myBean(@Qualifier("FrameworkBean") FrameworkBeanType frameworkBean) {
    SomeType type = getSomeType();
    type.setFrameworkBean(frameworkBean);
    return type;
} 
 类似资料:
  • 我读了很多关于如何在spring boot项目中使用spring-boot-starter-parent的帖子。基本上,我读过一些帖子(Spring文档也讨论了这一点),这些帖子描述了两种实现这一点的方法 直接使用spring-boot-starter-parent作为项目父级。它给我们带来了依赖管理和插件管理的好处。 另一种方法是在项目pom中导入spring-boot-starter父级(如果

  • 问题内容: 使用基于注释的配置(等)是否可以实现相同的bean继承? http://docs.spring.io/spring/docs/4.1.0.BUILD-SNAPSHOT/spring-framework- reference/htmlsingle/#beans-child-bean- definitions 问题答案: java config中没有抽象bean的概念,因为Java语言已经

  • 我已经用自定义注释注释了Spring bean,但似乎Spring在创建bean后删除了我的自定义注释。 第二步不行,我的自定义注释丢失了。(可能是到期的代理文件) 我的豆子 我的一个自定义注释的示例 findAndDoStuffWithAnnotatedThings Bean中出错的内容被传递到一个类,在该类中,我的自定义注释得到验证,但我的验证程序找不到任何注释。(Util使用isAnnota

  • 使用基于注释的配置(等)是否可以实现相同的bean继承? http://docs.spring.io/spring/docs/4.1.0.BUILD-SNAPSHOT/spring-framework-reference/htmlsingle/#beans-child-bean-definitions

  • 我目前正在开发一个尽可能尊重六边形架构原则的应用程序。 因此,我的“域”模块(组Id: ; 工件Id:)不依赖于任何技术框架。 我的所有服务都使用自定义注释(本身是我域的一部分)进行注释: 然而,在我的“Quarkus应用”模块(groupId:< code > acme ;artifact id:< code > app-quar kus ,我需要注入我的“域”模块中定义的服务(< code>a

  • 我是scala和Spark的新手,我有以下大小写类A ClassCastException:Scala.Collection.Mutable.WrappDarRay$OFRef不能强制转换为java.util.List 请帮忙。