在客户端项目中配置管理API

时间:2020-09-01 19:28:13

标签: java spring

我需要在客户端项目中使用管理API。如何将adminAPI bean创建/注入到客户端项目中。

这是管理API:

@Configuration
public class QOCAdminConfig
{
 
    @Bean
    public QOCAdminSettings qocAdminSettings()
    {
        return new QOCAdminSettings();
    }
    
    @Bean
    public QOCAdminEndpoint qocAdminEndpoint()
    {
        QOCAdminSettings settings = qocAdminSettings();
        AccessTokenSource serviceAuth = new ServiceAuth(settings.authUrl, settings.authUser, settings.authSecret);
        EndpointConfig config = EndpointConfig.builder()
                .withBaseUrl(settings.partnerAdminUrl)
                .withServiceAuth(serviceAuth)
                .withFailureHandler(new PartnerAdminFailureHandler())
                .build();
        return new QOCAdminEndpoint(config);
    }
   
    public static class QOCAdminSettings
    {
        @Value("${qoc.gatewayService.auth.user}")
        private String authUser;
        
        @Value("${qoc.gatewayService.auth.secret}")
        private String authSecret;
        
        @Value("${qoc.gatewayService.auth.url}")
        private String authUrl;
        
        @Value("${qoc.partnerAdmin.url}")
        private String partnerAdminUrl;

        @Override
        public String toString()
        {
            return "QOCAdminSettings [authUser=" + authUser + ", authSecret=" + authSecret + ", authUrl="
                    + authUrl + ", partnerAdminUrl=" + partnerAdminUrl + "]";
        }
       
        
    }
}

在我的客户代码中,我需要使用终结点方法,例如,客户项目使用的是旧版Spring 4.1.5.RELEASE

@Autowired
 QOCAdminEndpoint endpoint;

endpoint.getSelectedEndpoint();

如何在客户端代码中定义这些配置。

1 个答案:

答案 0 :(得分:0)

要将admin API包含在您的项目中,您需要做的就是确保将lib的组件包含在Spring的应用程序上下文中。

要这样做,您有两种选择。我假设您的客户项目具有自己的Configuration类。

@ComponentScan

使用@ComponentScan,您可以扫描AdminAPI库的根包。它将扫描库中的组件,并使它们在Spring Context上可用

@Configuration
@ComponentScan(basePackages = "com.admin.project") //replace with dependency's base package
public class ClientProjectConfig {
    
    @Bean
    pulblic SomeBean someLocalBean() {
        .....
    }
}

@导入

您还可以使用@Import指定lib的Configuration类。因为它将不会扫描整个程序包,所以它将使您对上下文中包含的Bean有更多的控制权。

@Configuration
@Import(QOCAdminConfig.class)
public class ClientProjectConfig {

    @Bean
    pulblic SomeBean someLocalBean() {
        .....
    }
}

这也是一个有用的链接:https://www.baeldung.com/spring-import-annotation