title: Difference between @target and @within (Spring AOP)
body: <p>Spring manual says:</p>
  
  <blockquote>
    <p>any join point (method execution only in Spring AOP) where the target
    object has an @Transactional annotation: 
    @target(org.springframework.transaction.annotation .Transactional) </p>
    
    <p>any join point (method execution only in Spring AOP) where the
    declared type of the target object has an @Transactional annotation: 
    @within(org.springframework.transaction.annotation .Transactional)</p>
  </blockquote>
  
  <p>But I not see any difference between them!</p>
  
  <p>I tried to Google it: </p>
  
  <blockquote>
    <p><em>One difference between the two is that @within() is matched statically, requiring the corresponding annotation type to have only
    the CLASS retention.  Whereas, @target() is matched at runtime,
    requiring the same to have the RUNTIME retention. Other than that,
    within the context of Spring,  here is no difference between the join
    points selected by two.</em></p>
  </blockquote>
  
  <p>So I tried to add custom annotation with <em>CLASS</em> retention, but Spring throw an Exception (because annotation <strong>must have</strong> <em>RUNTIME</em> retention)</p>