问题
When Spring catches an SQLException, does it close the prepared statement, result set, and/or connection before throwing it's own DataAccessException (runtime) exception?
I have a developer who wants to create an AOP aspect to catch these exceptions and log and/or close the connection.
@AfterThrowing(pointcut="dataAccessOperation()", throwing="exception")
public void doRecoveryActions(JoinPoint thisJoinPoint, DataAccessException exception) {
// log and/or close connection
}
回答1:
Yes.
That's the whole point of JdbcTemplate
- it handles all kinds of boilerplate actions including release of all resources. See 12. Data access with JDBC.
回答2:
I think your developer should take a look at springs transaction managemant capabilities. You can use AOP to advice logging, rollback behavior and even retry or other exception handling actions to react completly declarative.
来源:https://stackoverflow.com/questions/5096899/does-springs-jdbctemplate-close-the-connection-if-an-exception-is-thrown