Spring AOP + @Transaction - czy będzie rollback

0

Witam.
Ponieważ Spring JDBC wyrzuca bląd EmptyResultDataAccessException dla queryForObject a ja wole wyrzucać swój błąd NotFoundException postanowiłem że zrobie Aspekt który to będzie przechwytywał:

 
@Component
@Aspect
public class EmptyResultDataAccessExceptionAspect {
	private Logger logger = LoggerFactory.getLogger(this.getClass());
	
	@AfterThrowing(value =" @within(...)",throwing="e")
	public void emptyResultDataAccessExceptionHandle(EmptyResultDataAccessException e) throws NotFoundException{
		logger.error("Aspect intercept exception",e);
		throw new NotFoundException(e);
	}
}

Tutaj mam metodę która może wyrzucić taki wyjątek:

 
        @Override
	public Category readById(Integer id) {
		String sql = " SELECT id,category FROM category WHERE id=?";
		return jdbcTemplate.queryForObject(sql, rowMapper,id);
		
	}

W warstawie DAO korzystam z adnotacji do oznaczenia odpowiednich klas. Teraz pytanie jakie się nasuwa czy jeśli metoda ta będzie uruchomiona w klasie serwisowej w metodzie która działa w transakcji (tzn. z propagacją REQUIRED) to gdy ten Aspect przechwyci wyjątek Springowy i wyrzuci napisany przeze mnie to transakcja zrobi rollback?

2

TX to też aspekt wszystko zależy od kolejności który aspekt jest pierwszy. Możliwe ze potrzebujesz użyć @Order

1 użytkowników online, w tym zalogowanych: 0, gości: 1