Spring Boot 中自动连接时的空指针
Null pointer when auto-wiring in Spring Boot
寻找自动连接外部 sdk 的标准是什么 class 我正在尝试这种方式但得到一个空指针.. 我在 spring 引导项目中使用 AmazonDynamoDBClient。所以我想我的配置 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;
我不太确定为什么我得到一个空指针似乎配置 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
寻找自动连接外部 sdk 的标准是什么 class 我正在尝试这种方式但得到一个空指针.. 我在 spring 引导项目中使用 AmazonDynamoDBClient。所以我想我的配置 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;
我不太确定为什么我得到一个空指针似乎配置 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