У меня есть Java-приложение, построенное на Spring 3. В этом проекте есть еще одна jar-зависимость в качестве зависимости.
Эта зависимость содержит класс @ org.aspectj.lang.annotation.Aspect
(скажем, com.aspectprovider.aspects.MyAspect
). Там есть @Before
совет сплести метод из классов, реализующий интерфейс Foo
. Примерно:
@Before("execution(* com.project.Foo.save(..))")
Интерфейс Foo
может находиться внутри «проекта» или в другом jar-файле. В данном примере это не имеет значения.
Мой проект содержит классы, реализующие Foo
. Это те классы, которые я хочу, конечно, объединить.
Мой файл конфигурации контекста приложения Spring ( applicationContext.xml
) содержит строку:
<aop:aspectj-autoproxy />
Я также объявляю аспект как bean-компонент , и введите некоторые свойства:
<bean id="myAspect" class="com.aspectprovider.aspects.MyAspect"
factory-method="aspectOf" >
<property name="someproperty" value="somevalue" />
</bean>
Через ведение журнала я вижу, что создается экземпляр MyAspect
и вводятся свойства. Но метод save не перехватывается. Это проблема.
Если я скопирую классы аспектов из jar-файла в приложение, в котором есть Spring, это сработает. Когда эти аспекты содержатся во внешних jar-файлах, сохранение метода не перехватывается. Есть какие-нибудь подсказки?
править:
int * my_pointer = 0; my_pointer = & my_array // ошибка компилятора
my_pointer = my_array // хорошо Если my_array - это адрес массива, то что мне дает & my_array? Если int my_array[5] = {0};
int *my_pointer = 0;
my_pointer = &my_array // compiler error
my_pointer = my_array // ok
my_array
- это адрес массива, то что мне дает & my_array
?