繁体   English   中英

Null 指针在 Spring 启动时自动接线

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM