单例 class 不同步行为

Singleton class unsynchronized behaviour

我正在尝试在 Springboot 中调用基于 oracle 的存储过程。它按预期工作,但我在扫描 SonarQube 时收到警告。请提出一种处理方法。

Program.java :

public class DataExecutor {

@Autowired
DataSource dataSource;

@Autowired
JdbcTemplate jdbcTemplate;

public int executeprocedure(){

jdbcTemplate  = new JdbcTemplate(dataSource);
    SimpleJdbcCall simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate).withSchemaName("FSW")
            .withProcedureName("SP");
..................... Rest of the code
}

JdbcTemplate 是一个只应初始化一次的可重用对象。您的 new JdbcTemplate 完全没有必要,因为 Spring 正在为您提供。

目前的最佳实践是完全不使用字段注入,而是将所有依赖项final并在构造函数中初始化;这有助于防止像这样的各种错误,并使您的 class 更容易测试。