寻找 Autowiring 外部 sdk 类的标准是什么,我正在尝试这种方式,但得到一个空指针。我在 Spring Boot 项目中使用 AmazonDynamoDBClient。所以我想我的配置类是这样的
@Configuration
public class DynamoDBClientBuilder {
public AmazonDynamoDB amazonDynamoDBClient;
@Bean
public void DynamoDBClientBuilderInitializer() {
amazonDynamoDBClient = this.initiateClient();
}
private AmazonDynamoDB initiateClient() {
return AmazonDynamoDBClientBuilder.standard().withEndpointConfiguration(
new AwsClientBuilder.EndpointConfiguration("http://localhost:4569", "us-west-1"))
.build();
}
}
然后我想在 spring 项目中使用该客户端的类,最好在任何方法之外执行类似的操作
@Autowired
private DynamoDBClientBuilder db;
private AmazonDynamoDB amazonDynamoDBClient = null;
然后在构造函数中或我们想要使用客户端的地方
amazonDynamoDBClient = db.amazonDynamoDBClient;
我不太确定为什么我得到一个空指针,似乎配置类没有在想要使用它的类之前启动。我也有兴趣了解最佳实践是什么,或者是否有更好的方法来做到这一点。
谢谢
最佳答案
试试这个:
@Configuration
public class DynamoDBClientBuilder {
@Bean
public AmazonDynamoDB amazonDynamoDB() {
return AmazonDynamoDBClientBuilder.standard().withEndpointConfiguration(
new AwsClientBuilder.EndpointConfiguration("http://localhost:4569", "us-west-1"))
.build();
}
}
然后像这样注入(inject)你的bean:
@Autowired
AmazonDynamoDB amazonDynamoDB;
或使用构造函数(推荐):
private final AmazonDynamoDB amazonDynamoDB;
@Autowired
public MyClass(AmazonDynamoDB amazonDynamoDB) {
this.amazonDynamoDB = amazonDynamoDB;
}
请注意,您的配置类必须包含组件扫描才能在 Spring 上下文中创建 bean
关于java - Spring Boot Autowiring 时的空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61076132/