将 Spring XML 转换为 JavaConfig

Converting Spring XML to JavaConfig

我想将以下 spring bean 从 xml 转换为 javaconfig class:

<bean id="restTemplate" class="org.springframework.security.oauth2.client.OAuth2RestTemplate">
    <constructor-arg ref="resource"/>
    <property name="messageConverters">
        <list>
            <ref bean="jaxbMessageConverter" />
            <ref bean="stringHttpMessageConverter" />
            <ref bean="jsonConverter" />
        </list>
    </property>
</bean>

<bean id="resource" class="org.springframework.security.oauth2.client.token.grant.password.ResourceOwnerPasswordResourceDetails">
    <property name="username" value="asdfasdf" />
    <property name="password" value="asdfasdfa" />
    <property name="clientId" value="asdfasdf-asdfas-asdfasf" />
    <property name="clientSecret" value="asdfasdf-asdfasdf-adfasdfd" /> 
    <property name="accessTokenUri" value="asdfsadfasd" />
    <property name="grantType" value="password"></property>
    <property name="clientAuthenticationScheme" value="form" />
</bean>

您将如何转换它?我遇到了 this example,但这有点令人困惑,因为 <constructor-arg...><property....> 标签在 java 中的表示方式对我来说并没有真正意义。在示例中,它们都转换为:

return new JButton(...);

在 spring 配置文件中你需要这样做:

@Bean
public ResourceOwnerPasswordResourceDetails resource() {
       ResourceOwnerPasswordResourceDetails  r = new ResourceOwnerPasswordResourceDetails ();
       r.setUsername("asdfasdf");
    ....

}
@Bean
public OAuth2RestTemplate restTemplate() {
      OAuth2RestTemplate rest = new OAuth2RestTemplate(resource());
      rest.setMessageConverters(...);
      List<HttpMessageConverter<?>> messageConv = new ArrayList<HttpMessageConverter<?>>();
      messageConv.add(new MappingJackson2HttpMessageConverter());
      rest.setMessageConverters(messageConv);
}

从上面的例子可以看出规则:

  1. 属性 可以用 setProperty 完成..

  2. 构造函数arg实际上是构造函数中的参数

  3. 列表是arraylist

  4. bean之间的依赖如示例

    建议:如果您正在努力实现某件事,但您不理解只是 google 它并搜索特定示例。这将是最简单的方法,并且按规则工作将很容易你