【问题标题】:Ordering issue with Instantiation of Spring XML and Java Configuration Beans Related to Properties与属性相关的 Spring XML 和 Java 配置 Bean 的实例化的排序问题
【发布时间】:2015-09-28 13:30:41
【问题描述】:

我有一个订购问题。我的@Bean 在我的 XML Bean 之后运行。我需要颠倒过来,因为我的 @Bean 建立了 XML Bean 需要的属性。看来@ImportResource 注解在@Configuration 之前处理,@Bean 注解被处理。

我有一个配置类,由另一个用@ContextConfiguration 注释的类引导。第一个是这样注释的:

  • @配置
  • @Import(PropertyConfiguration.class)
  • @ImportResource(Consts.XML_BASED_CONFIG_FILE)

PropertyConfiguration.class 包含一个@bean 定义,它使用 PropertySource(而不是注解)来拉入属性以供 Consts.XML_BASED_CONFIG_FILE 中定义的 XML bean 使用。

@ImportResource 是对现有基于 XML 的 bean def 文件的例行引用,以便 java 和 xml bean 互操作。

除了这个订购问题外,一切都运行良好。

我已经尝试使用@ProperySource 引入属性——我可以说注释不支持运行自定义 bean,因为属性源是 JDBC 数据库。我已经在 @ImportResource 之前建立了 @PropertySource 运行,因此这将解决排序问题。 我已经在我的 @Bean 方法上尝试了 @Lazy(false) - 没有帮助。

接下来是从我的 XML 文件中引导 @configuration ——不过,我认为这无关紧要。

感谢任何帮助。谢谢。

【问题讨论】:

  • hmmm...我先尝试引导 XML,但没有帮助。

标签: spring properties configuration javabeans


【解决方案1】:

@ImportResource注解确实在@Configuration@Bean注解处理之前处理。我没有找到扭转这个顺序的方法。由于导入的资源是基于 XML 文件的引用 Spring 属性的 bean 定义,因此在创建 bean 之前尚未设置属性并导致错误。这意味着,当您在 @Bean 方法中设置属性并期望在被 XML bean 引用之前设置这些属性时,您不能在 XML Bean 旁边实现 @Configuration@Beans

在我的例子中,@Bean 正在从 JDBC 源建立属性。

为了解决这个问题,我必须将每个 XML Bean 引用属性转换为 @Beans

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2012-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多