title: Does Spring @transaction work on a concrete method of abstract class
body: <p>From spring reference doc </p>
  
  <blockquote>
    <p>Spring recommends that you only annotate concrete classes (and methods of concrete classes) with the @Transactional annotation, as opposed to annotating interfaces. You certainly can place the @Transactional annotation on an interface (or an interface method), but this works only as you would expect it to if you are using interface-based proxies. The fact that Java
    annotations are not inherited from interfaces means that if you are using class-based proxies (proxy-target-class="true") or the weaving-based aspect (mode="aspectj"), then the transaction settings are not recognized by the proxying and weaving infrastructure, and the object will not be wrapped in a transactional proxy, which would be decidedly bad.</p>
  </blockquote>
  
  <p>Though it only talks about interfaces, abstract classes are considered as non-concrete as well.</p>
  
  <p>So if i have an abstract class</p>
  
  <pre><code>public abstract class BaseService{
  //here is a concrete method
  @Transactional
  public void updateData{
  //do stuff using dao layer
  }
  </code></pre>
  
  <p>and a concrete class which extends the class</p>
  
  <pre><code>public class SpecialService extends BaseService{
  //body of class
  }
  </code></pre>
  
  <p>Now if i call <code>specialService.updateData()</code> from my controller class will it be transactional?</p>