Autowire Objectmapper in RowMapper



我发现答案说可以在行映射器内自动连线,

如果希望 ScoreMapper 实例将 ScoreCreator scoreCreator 注入 Spring bean,则 ScoreMapper 实例本身必须是 Spring bean,即由 Spring 创建和管理

或者通过添加@Component

您可以将 PersonUtility 类定义为在类上添加@component的 Spring Bean。

但目前 RowMapper 是用jdbcTemplate.query中的new实例化的:

jdbcTemplate.query(SQL, new Object[] {}, new MyRowMapper())

而且我无法在内部自动连接Spring托管的对象映射器

public class MyRowMapper implements RowMapper<Map<Integer, Type>> {
@Autowired
@Qualifier("myObjectMapper")
ObjectMapper objectMapper;

我应该如何重构当前代码来管理 Bean 行映射器?

RowMapper 是一个线程安全类。这意味着,它的单个实例可以在多个线程之间共享。所以,这意味着,你可以让它成为一个单例类,让 spring 处理它的生命周期(使用像 @Component 这样的注释之一(。无论您想在哪里使用它的实例,只需自动连接/注入现有实例,而不是每次都实例化它(new(

@Component
public class MyRowMapper implements RowMapper<Map<Integer, Type>> {
@Autowired
@Qualifier("myObjectMapper")
ObjectMapper objectMapper;

然后

class ASingletonClass(){
@Autowired MyRowMapper myRowMapper;
public MyRowMapper myAweSomeMethod(){
return jdbcTemplate.query(SQL, new Object[] {}, myRowMapper)
}
}

请参考此答案。它有类似的路线

相关内容

  • 没有找到相关文章

最新更新