title: Starting new transaction in Spring bean
body: <p>We have:</p>
  
  <pre><code>@Transactional(propagation = Propagation.REQUIRED)
  public class MyClass implementes MyInterface { ...
  </code></pre>
  
  <p>MyInterface has a single method: <code>go()</code>.  </p>
  
  <p>When go() executes we start a new transaction which commits/rollbacks when the method is complete - this is fine.</p>
  
  <p>Now let's say in go() we call a private method in MyClass that has <code>@Transactional(propagation = Propagation.REQUIRES_NEW</code>.  It seems that Spring "ignores" the REQUIRES_NEW annotation and does not start a new transaction.  I believe this is because Spring AOP operates on the interface level (MyInterface) and does not intercept any calls to MyClass methods.  Is this correct?</p>
  
  <p>Is there any way to start a new transaction within the go() transaction?  Is the only way to call <em>another</em> Spring managed bean that has transactions configured as REQUIRES_NEW?</p>
  
  <hr>
  
  <p><strong>Update</strong>: Adding that when clients execute <code>go()</code> they do so via a reference to the interface, not the class:</p>
  
  <pre><code>@Autowired
  MyInterface impl;
  
  impl.go();
  </code></pre>