【问题标题】:Singleton class unsynchronized behaviour单例类不同步行为
【发布时间】:2020-12-01 12:42:21
【问题描述】:

我试图在 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
}

【问题讨论】:

    标签: java spring-boot sonarqube singleton


    【解决方案1】:

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

    目前的最佳实践是根本不使用字段注入,而是将所有依赖项设为final,并在构造函数中对其进行初始化;这有助于防止此类错误,并使您的课程更易于测试。

    【讨论】:

    • 您能否分享一些调用 jdbcTemplate 时应遵循的最佳实践示例。
    • @Praveenks 你似乎在调用它就好了。问题在于创建了额外的不相关副本。
    猜你喜欢
    • 1970-01-01
    • 2020-06-14
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多