[英]Null pointer when auto-wiring in Spring Boot
Looking for what the standard is for auto-wiring an external sdk class I am trying this way but getting a null pointer.. I am using AmazonDynamoDBClient in a spring boot project. 所以我想我的配置 class 是这样的
@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();
}
}
然后我有 class 我想在 spring 项目中使用该客户端,最好在任何方法之外做这样的事情
@Autowired
private DynamoDBClientBuilder db;
private AmazonDynamoDB amazonDynamoDBClient = null;
然后在构造函数或我们要使用客户端的地方
amazonDynamoDBClient = db.amazonDynamoDBClient;
我不太确定为什么我得到一个 null 指针,似乎配置 class 在想要使用它的 class 之前没有被启动。 也很想听听最佳实践是什么,或者有更好的方法来做到这一点。
谢谢
尝试这个:
@Configuration
public class DynamoDBClientBuilder {
@Bean
public AmazonDynamoDB amazonDynamoDB() {
return AmazonDynamoDBClientBuilder.standard().withEndpointConfiguration(
new AwsClientBuilder.EndpointConfiguration("http://localhost:4569", "us-west-1"))
.build();
}
}
然后像这样注入你的bean:
@Autowired
AmazonDynamoDB amazonDynamoDB;
或使用构造函数(推荐):
private final AmazonDynamoDB amazonDynamoDB;
@Autowired
public MyClass(AmazonDynamoDB amazonDynamoDB) {
this.amazonDynamoDB = amazonDynamoDB;
}
请注意,您的配置类必须包含组件扫描才能在 spring 上下文中创建 bean
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.