我需要在客户端项目中使用管理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();
如何在客户端代码中定义这些配置。
答案 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