用注释注入取代了通过XML的Springbean注入



我想通过注释声明并注入一个bean。它以前是通过XML完成的,但我需要应用于Spring Boot项目。

以下是源xml

<oauth:resource-details-service id="rds">
    <oauth:resource
            id="oauth1"
            key="${key}"
            secret="${secret}"
            request-token-url="${token}"
            user-authorization-url="${user-auth}"
            access-token-url="${accesstokenurl}">
    </oauth:resource>
</oauth:resource-details-service>

这种豆子后来被用作这种

<bean class="org.springframework.security.oauth.consumer.client.OAuthRestTemplate">
    <constructor-arg ref="oauth1"/>
</bean>

我找到的唯一方法是通过直接实例化

BaseProtectedResourceDetails resourceDetails = new BaseProtectedResourceDetails();
resourceDetails.set...
resourceDetails.set...
OAuthRestTemplate restTemplate = new OAuthRestTemplate(resourceDetails);

这样做的正确方法是什么?

您可以在主类中使用@Bean注释,例如:

@SpringBootApplication
public class Application{
 @Bean
 public OAuthRestTemplate getAuth(){
   BaseProtectedResourceDetails resourceDetails = new BaseProtectedResourceDetails();
   resourceDetails.set...
   resourceDetails.set...
   return new OAuthRestTemplate(resourceDetails);
 }
}

并且在使用@Autowired注入对象之后

@Autowired
private OAuthRestTemplate oAuthRestTemplate;

我不确定您是否在搜索此解释。但如果我理解你的问题,那么以下信息可能会对你有所帮助。

对于示例配置类,您可以看到此示例。

package com.tutorialspoint;
import org.springframework.context.annotation.*;
@Configuration
public class TextEditorConfig {
   @Bean 
   public TextEditor textEditor(){
      return new TextEditor( spellChecker() );
   }
   @Bean 
   public SpellChecker spellChecker(){
      return new SpellChecker( );
   }
}

对于注册配置类,您可以看到这个SO答案。

有关"服务"、"组件"、"存储库"、"控制器"one_answers"自动连线"的示例,请参见此。

最新更新