I have the following code:
/**
* Restored deleted partner
*/
@Transactional
public void restorePartnerById(Integer id){
// logic
}
When I make the method final
/**
* Restored deleted partner
*/
@Transactional
public final void restorePartnerById(Integer id){
// logic
}
I get a compilation error stating:
Methods annotated with
@Transactional
must be overridable
I went digging around but I cannot get the reason why it must be override able, Why must the method be override able?
Spring's Transactional works with creating a proxy class that override methods:
create a transactional proxy around the object that is created from the fooService bean definition. The proxy will be configured with the transactional advice, so that when an appropriate method is invoked on the proxy