首页 > 解决方案 > 单例类不同步行为

问题描述

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

程序.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
}

在此处输入图像描述

标签: javaspring-bootsonarqubesingleton

解决方案


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

当前的最佳实践是根本不使用字段注入,而是在构造函数中创建所有依赖项final并对其进行初始化;这有助于防止像这样的各种错误,并使您的课程更容易测试。


推荐阅读