简体   繁体   中英

Why must methods annotated with @Transactional be overrideable

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

我认为将方法更改为final与@Trasacational ,请参阅此链接@Trasactional将如何工作http://www.codingpedia.org/jhadesdev/how-does-spring-transactional-really-work/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM