@Transactional
@Component
@EntranceLog
public class TransferServiceImpl implements TransferService {
xxxx
}
Я hava класс с Transactional
аннотация и Component
аннотация. EntranceLog
- это моя аннотация для печати журнала по aop.Почему не удается получить аннотацию из beanClass?
public class LogProxyCreator extends AbstractAutoProxyCreator implements ApplicationContextAware {
private static final LogInterceptor LOG = new LogInterceptor();
private static Logger log = LoggerFactory.getLogger(LogProxyCreator.class);
@Override
protected Object[] getAdvicesAndAdvisorsForBean(Class<?> beanClass, String s, TargetSource targetSource) throws BeansException {
Annotation anno = null;
for (Annotation annotationTemp : beanClass.getAnnotations()) {
Log temp = annotationTemp.annotationType().getAnnotation(EntranceLog.class);
if (temp != null) {
anno = temp;
break;
}
}
if (anno == null) {
return null;
}
Object[] additional = new Object[]{LOG};
log.error(beanClass.getName() + " has register the fc log.");
return additional;
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
LOG.setContext(applicationContext);
}
}
Когда мое приложение начинает, фасоль transferServiceImpl начала, но beanClass.getAnnotations()
не может получить какую-либо аннотации. Зачем?
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Log(logName = "entrance")
public @interface EntranceLog {
@AliasFor(
annotation = Log.class,
attribute = "subLogName"
)
String logName() default "";
@AliasFor(
annotation = Log.class,
attribute = "openInfoLog"
)
boolean openInfoLog() default false;
}
Это моя аннотация.
Какое определение аннотации? Это даже сохраняется через сборник? – vegaasen
@vegaasen Да, он может сохраняться через компиляцию. Определение аннотации прост. Моя цель состоит в том, чтобы проксировать компонент с аннотацией EntranceLog, но когда приложение запускается, я не могу получить никаких комментариев от компонента. –
Я предлагаю вам добавить код аннотации, возможно, что-то в его определении прекратит его из-за сохраняющегося – niceman