2015-03-12 6 views
1

Мы используем AspectJ с поддержкой Spring. Я объявил свой аспект в своем ApplicationContext.xml, как показано ниже.Spring factory-method = "aspectOf" не работает при развертывании приложения из RAD

<context:annotation-config /> 
<context:spring-configured /> 
<context:component-scan base-package="com,com.util"> 
    <context:exclude-filter type="regex" expression="com.xyz*.*" /> 
</context:component-scan> 
<bean id="xyz" class="com.util.XyzAspect" factory-method="aspectOf"/> 

Аспект Класс:

@Configurable 
@Aspect 
public class XyzAspect { 

@Autowired 
private XyzUtil xyzUtil; 

@After("showPoint() ") 
public void logUser(JoinPoint pjp) throws Throwable { 
    Sysout("Some log Statement"); 
} 
} 

Это работает нормально, когда я делаю Maven сборки из командной строки и развертывания EAR вручную на сервере приложений WebSphere (7.0). но когда я делаю развертывание из консоли администрирования RAD7.5 (Rational Application Developer), он дает «Не найдено подходящего заводского метода: проблема метода factoryOf».

Может ли кто-то сделать все, чтобы выбраться из этой проблемы. Я также хочу запустить приложение из RAD. Заранее спасибо.

ответ

1

Метод aspectOf соткано в ваш XyzAspect от AspectJ. Я считаю, что вы используете компиляцию во времени, поэтому EAR, созданный Maven, корректно «исправил» байт-код для класса XyzAspect, таким образом, он развертывает ОК. Если вы собираете проект с помощью IDE, байт-код класса пропускает определенные вещи (точное представление источника Java an является «неполным»). Во время плетения AspectJ «преобразует» ваш аспект в singleton, то есть добавляет статическую переменную, чтобы удерживать единственный экземпляр и метод (aspectOf), чтобы получить только экземпляр. Посмотрите на this thread, чтобы получить дополнительную информацию.

 Смежные вопросы

  • Нет связанных вопросов^_^