【问题标题】:Bean inheritance via annotation通过注解实现 Bean 继承
【发布时间】:2016-05-13 23:06:47
【问题描述】:

如何使用注解在 Spring 中提供 bean 继承?在 XML 配置中,我使用了 <parent="parentBean"> 标签。有注释吗?

比如我有两个bean(cacheEventLogger extends fileEventLogger):

 <bean id="fileEventLogger" class="com.myuspring.core.loggers.FileEventLogger" init-method="init">
    <constructor-arg value="d:/1.txt"/>
</bean>


<bean id="cacheEventLogger" class="com.myspring.core.loggers.CacheFileEventLogger" init-method="init"
      parent="fileEventLogger" >
    <constructor-arg value="15"/>
    <property name="cacheSize" value="2"/>

我已经创建了 AppConfig 类:

@Configuration

公共类 AppConfig {

@Bean(initMethod = "init")
public FileEventLogger fileEventLogger() {
    return new FileEventLogger("d:/1.txt");
}

@Bean(initMethod = "init")
public CacheFileEventLogger cacheFileEventLogger() {
   ???

}

}

我应该为 cacheEventLogger 设置什么注解来扩展 fileEventLogger?

【问题讨论】:

  • 你不能依赖注入基类;这不是依赖。

标签: java spring


【解决方案1】:

Spring 特定的注解没有这样的parent 属性,因为Java 语言提供了创建模板 并将其用作父级所需的一切(即继承、抽象) 对于一些 Spring-beans。

【讨论】:

  • 你的意思是,子bean的类必须扩展父bean的类?据我所知,在 xml-config bean 继承中!= 类继承
  • 是的,但是你既然有Java继承,你可以实现相同的基于模板的结构
【解决方案2】:

Spring 注释没有等同于 spring XML parent 标记/属性。 JIRA 中指定了一种解决方法,其中包含一些自定义编码。

请参阅相关的 spring JIRA https://jira.spring.io/browse/SPR-5580 和来自此 JIRA Bean definition inheritance with annotations? 的 stackoverflow 答案的参考

我想这就是你要找的。​​p>

【讨论】:

  • 是的,就是这样。谢谢
猜你喜欢
  • 1970-01-01
  • 2019-03-21
  • 2011-10-07
  • 1970-01-01
  • 2015-02-23
  • 2015-08-03
  • 1970-01-01
  • 2016-08-30
  • 1970-01-01
相关资源
最近更新 更多