AOP: возможность перехватывать вызовы JDBCTemplate, но не вызовы NamedParameterJdbcTemplate - PullRequest
0 голосов
/ 03 октября 2018

Я сделал два метода испытаний.Один использует JdbcTemplate для создания запроса, в то время как другой использует NamedParameterJDBCTemplate.

Использование NamedParameterJdbcTemplate:

@Autowired
    JdbcTemplate jdbcTemplate;

    public Student findById(long id) {
        NamedParameterJdbcTemplate apptemplate = new NamedParameterJdbcTemplate(jdbcTemplate.getDataSource());
        return apptemplate.queryForObject("select * from student where id="+id, Collections.emptyMap(),
                new BeanPropertyRowMapper< Student >(Student.class));
    }

Использование JdbcTemplate

@Autowired
JdbcTemplate jdbcTemplate;


public Student findById(long id) {
    return jdbcTemplate.queryForObject("select * from student where id=?", new Object[] {
                    id
            },
            new BeanPropertyRowMapper< Student >(Student.class));
}

Я использую указатель ниже для перехвата:

Для JdbcTemplate:

@Pointcut("execution(* org.springframework.jdbc.core.JdbcOperations+.*(..))")
public void forJdbcTemplate() {
}

Для NamedParameterJdbcTemplate:

@Pointcut("execution(* org.springframework.jdbc.core.namedparam.NamedParameterJdbcOperations+.*(..))")
public void forNamedParameterJdbcTemplate() {
}

Почему мой pointcut для JdbcTemplate работает, но pointcut для NamedParameterJdbcTemplate не работает?

...