【问题标题】:Translate Spring XML configuration to Java config将 Spring XML 配置转换为 Java 配置
【发布时间】:2011-01-15 07:09:37
【问题描述】:

我想在 Java 配置中使用 Spring,但几乎所有示例都是用 XML 编写的,我不知道如何将它们转换为 Java。看看这些examples from Spring Security 3

 <http auto-config='true'>
   <intercept-url pattern="/**" access="ROLE_USER" />
 </http> 

 <authentication-manager>
    <authentication-provider>
      <user-service>
        <user name="jimi" password="jimispassword" authorities="ROLE_USER, ROLE_ADMIN" />
        <user name="bob" password="bobspassword" authorities="ROLE_USER" />
      </user-service>
    </authentication-provider>
  </authentication-manager>

  <password-encoder hash="sha">
    <salt-source user-property="username"/>
  </password-encoder>

如何将其转换为 Java 配置?或者,更一般地说,如何将 Spring XML 配置转换为 Java?有一小部分是关于 Java confing in the Spring reference 的,但没什么帮助。

【问题讨论】:

标签: java xml spring configuration


【解决方案1】:

这可能比您想象的要简单。春天没有做任何魔术。 XML 配置解析器只是创建 bean 定义并将它们注册到 bean 工厂。您可以通过创建DefaultListableBeanFactory 并使用它注册您的bean 定义来做同样的事情。这里的主要错误是认为“哎呀,我只会创建 bean 并将它们放在应用程序上下文中”。这种方法不起作用,因为 Spring 懒惰地创建 bean,并且 API 是围绕在必要时调用的工厂的想法构建的,而不是在启动时完成所有工作的工厂。

Here is some example code。请注意,此示例需要更多代码行,但通过定义您自己的辅助方法,您应该能够将其分解为与 XML 相当的内容。

还可以查看source for the Spring unit tests 的示例。

【讨论】:

    【解决方案2】:

    您无法使用自定义命名空间(例如 http://www.springframework.org/schema/security)翻译 XML 配置。但是,您可以使用 @ImportResource 将 XML 配置与基于 Java 的配置混合使用

    【讨论】:

    • 谢谢。似乎 Spring 将永远是一个 XML 框架 :-(
    【解决方案3】:

    关注JavaConfig 项目documentation

    【讨论】:

      猜你喜欢
      • 2015-05-30
      • 1970-01-01
      • 2015-07-22
      • 1970-01-01
      • 1970-01-01
      • 2014-09-25
      • 2012-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多