在我的应用程序中,我有两个OAuth2RestTemplate bean,一个在我的代码中创建,另一个是使用自定义库创建的。
@Bean(name = "apsRestTemplate")
public OAuth2RestOperations restTemplate() {
AccessTokenRequest atr = new DefaultAccessTokenRequest();
return new OAuth2RestTemplate(resource(), new DefaultOAuth2ClientContext(atr));
}
和一个从库
创建的OAuth2RestTemplate oAuth2RestTemplate = beanFactory.getBean(OAuth2RestTemplate.class, this.resourceId);
由于我在上下文中有两个bean,Spring抱怨它找到了两种相同类型的bean。
我不能给第二个bean一个名字,因为它是从外部库创建的。 为了解决这个问题,我想扩展OAuth2RestTemplate类,以便我将使用相同的所有OAuth2RestTemplate方法使用不同的类,所以我的spring不会抱怨两个bean。
我只是将其扩展如下
public class OAuthTemplateExtention extends OAuth2RestTemplate{
public OAuthTemplateExtention(OAuth2ProtectedResourceDetails resource, OAuth2ClientContext context) {
super(resource, context);
}
}
现在我使用扩展类来关闭oAuth2RestTemplate
OAuthTemplateExtention oAuth2RestTemplate = (OAuthTemplateExtention) beanFactory.getBean(OAuth2RestTemplate.class, this.resourceId);
我正在获得班级异常
"org.springframework.security.oauth2.client.OAuth2RestTemplate$$EnhancerBySpringCGLIB$$7e29ac2d cannot be cast to .config.OAuthTemplateExtention",
我这样做了吗?