You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot读application.properties连Cassandra报空指针异常如何解决

问题原因
  1. 手动实例化配置类导致配置注入失效:两处手动new CassandraConfig的操作(DataSourceCassandraConfig里的new CassandraConfig()、CassandraConfig的cluster()方法里的new CassandraConfig())生成的实例不受Spring容器管理,@Value标注的属性不会被自动赋值,全部为null。
  2. 配置项缺失:application.properties中未配置代码里引用的spring.data.cassandra.basePackages、spring.data.cassandra.username、spring.data.cassandra.password三个配置项,即使Spring注入也会出现空值。
  3. 方法名拼写错误:DataSourceCassandraConfig中调用了cassandraConfig.getUserName(),但CassandraConfig类里对应方法名为getUsername()(u小写),会导致编译异常或取值失败。
  4. DataSourceCassandraConfig未被Spring托管:如果该类没有加@Configuration或@Component注解,即使使用@Autowired也无法注入CassandraConfig实例。
修复步骤
  1. 删除CassandraConfig类中错误的cluster() Bean定义,无需手动创建CassandraConfig实例,该类本身由Spring托管会自动注入配置值。
  2. 补全application.properties中的缺失配置:
# 替换为你项目实际的实体类包路径
spring.data.cassandra.basePackages=br.com.myapp.entity
# 替换为你Cassandra实际的账号密码,默认安装的账号密码均为cassandra
spring.data.cassandra.username=cassandra
spring.data.cassandra.password=cassandra
  1. 改造DataSourceCassandraConfig类,添加@Configuration注解使其被Spring托管,直接注入CassandraConfig实例,移除手动new的逻辑,修正方法名拼写:
@Configuration
public class DataSourceCassandraConfig {

    @Autowired
    private CassandraConfig cassandraConfig;

    @Bean
    public SparkSession getSession() {
        SparkSession spark = SparkSession.builder().appName("SparkCassandraApp")
                .config("spark.cassandra.connection.host", cassandraConfig.getContactPoints())
                .config("spark.cassandra.connection.port", cassandraConfig.getPort())
                .config("spark.cassandra.auth.username", cassandraConfig.getUsername())
                .config("spark.cassandra.auth.password", cassandraConfig.getPassword())
                .master("local[2]").getOrCreate();
        return spark;
    }
}

内容的提问来源于stack exchange,提问作者Luciana Oliveira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 11:36:08