如何将xml表示法转换为基于注释的表示法:Spring - Java

dev*_*v2d 1 java spring spring-annotations

我在我的spring上下文xml中有以下xml配置,我使用基于注释的方法非常少,无法弄清楚如何使用注释来表示以下内容,需要帮助.

<bean id="myPolicyAdmin" class="org.springframework.security.oauth2.client.OAuth2RestTemplate">
        <constructor-arg>
            <bean class="org.springframework.security.oauth2.client.token.grant.password.ResourceOwnerPasswordResourceDetails">
                <property name="accessTokenUri" value="${accessTokenEndpointUrl}" />
                <property name="clientId" value="${clientId}" />
                <property name="clientSecret" value="${clientSecret}" />
                <property name="username" value="${policyAdminUserName}" />
                <property name="password" value="${policyAdminUserPassword}" />
            </bean>
        </constructor-arg>
    </bean>
Run Code Online (Sandbox Code Playgroud)

在我的java类(策略管理器)中,它被称为如下,我实际上是在引用一个示例并尝试将其转换为所有注释.

@Autowired
@Qualifier("myPolicyAdmin")
private OAuth2RestTemplate myPolicyAdminTemplate;
Run Code Online (Sandbox Code Playgroud)

编辑:我尝试创建一个bean,org.springframework.security.oauth2.client.token.grant.password.ResourceOwnerPasswordResourceDetails但不知道如何设置其属性以及如何作为构造函数args访问它myPolicyAdminTemplate

K. *_*ddy 6

您可以使用JavaConfig配置相同的bean,如下所示:

@Component
@Configuration
public class AppConfig
{
    @Value("${accessTokenEndpointUrl}") String accessTokenUri;
    @Value("${clientId}") String clientId;
    @Value("${clientSecret}") String clientSecret;
    @Value("${policyAdminUserName}") String username;
    @Value("${policyAdminUserPassword}") String password;

    @Bean
    public OAuth2RestTemplate myPolicyAdmin(ResourceOwnerPasswordResourceDetails details)
    {
        return new OAuth2RestTemplate(details);
    }

    @Bean
    public ResourceOwnerPasswordResourceDetails resourceOwnerPasswordResourceDetails()
    {
         ResourceOwnerPasswordResourceDetails bean = new ResourceOwnerPasswordResourceDetails();
         bean.setAccessTokenUri(accessTokenUri);
         bean.setClientId(clientId);
         bean.setClientSecret(clientSecret);
         bean.setUsername(username);
         bean.setPassword(password);         
         return bean;
    }
}
Run Code Online (Sandbox Code Playgroud)