Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring AOP / 15 сообщений из 15, страница 1 из 1
11.11.2014, 19:05
    #38802655
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring AOP
Как правильно добавить aop в конфиг файл спринга?
Пока было без aop, то работало с первым вариантом DOCTYPE

делаю как тут http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/xsd-config.html#xsd-config-body-schemas-aop

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
<?xml version="1.0" encoding="UTF-8"?>

<!-- <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans> -->

<!-- <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> -->

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

	<!-- бины -->	
	
	<bean id="audience" class="com.springinaction.springidol.Audience" />
	
	<aop:config>

		<aop:aspect ref="audience">
		
			<aop:pointcut id="performance"
				expression="execution(* com.springinaction.springidol.Performer.perform(..))" />
			
			<aop:before pointcut-ref="performance" method="takeSeats" />
		
		</aop:aspect>

	</aop:config>	

</beans>



Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'poeticDuke' defined in class path resource [com/springinaction/springidol/spring-idol.xml]: BeanPostProcessor before instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.aop.aspectj.AspectJPointcutAdvisor#0': Cannot create inner bean '(inner bean)#19709b1' of type [org.springframework.aop.aspectj.AspectJMethodBeforeAdvice] while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#19709b1': Cannot resolve reference to bean 'performance' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'performance': Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/aspectj/weaver/tools/PointcutDesignatorHandler
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:471)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:703)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
	at com.springinaction.springidol.App.main(App.java:11)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.aop.aspectj.AspectJPointcutAdvisor#0': Cannot create inner bean '(inner bean)#19709b1' of type [org.springframework.aop.aspectj.AspectJMethodBeforeAdvice] while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#19709b1': Cannot resolve reference to bean 'performance' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'performance': Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/aspectj/weaver/tools/PointcutDesignatorHandler
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:290)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:129)
	at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:646)
	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:140)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1114)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1017)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
	at org.springframework.aop.framework.autoproxy.BeanFactoryAdvisorRetrievalHelper.findAdvisorBeans(BeanFactoryAdvisorRetrievalHelper.java:92)
	at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findCandidateAdvisors(AbstractAdvisorAutoProxyCreator.java:101)
	at org.springframework.aop.aspectj.autoproxy.AspectJAwareAdvisorAutoProxyCreator.shouldSkip(AspectJAwareAdvisorAutoProxyCreator.java:103)
	at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessBeforeInstantiation(AbstractAutoProxyCreator.java:289)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInstantiation(AbstractAutowireCapableBeanFactory.java:958)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.resolveBeforeInstantiation(AbstractAutowireCapableBeanFactory.java:930)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:465)
	... 10 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#19709b1': Cannot resolve reference to bean 'performance' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'performance': Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/aspectj/weaver/tools/PointcutDesignatorHandler
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:336)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108)
	at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:632)
	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:140)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1114)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1017)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:276)
	... 28 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'performance': Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/aspectj/weaver/tools/PointcutDesignatorHandler
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1076)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1021)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
	... 36 more
Caused by: java.lang.NoClassDefFoundError: org/aspectj/weaver/tools/PointcutDesignatorHandler
	at java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.lang.Class.privateGetDeclaredConstructors(Class.java:2493)
	at java.lang.Class.getConstructor0(Class.java:2803)
	at java.lang.Class.getDeclaredConstructor(Class.java:2053)
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:80)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1069)
	... 42 more
Caused by: java.lang.ClassNotFoundException: org.aspectj.weaver.tools.PointcutDesignatorHandler
	at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
	... 48 more
...
Рейтинг: 0 / 0
11.11.2014, 19:06
    #38802657
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring AOP
rema174Caused by: java.lang.ClassNotFoundException: org.aspectj.weaver.tools.PointcutDesignatorHandler

А при чем тут конфиг, если либы нет. Пора начать пользовать мавеном даже на тестовых проектах.
...
Рейтинг: 0 / 0
11.11.2014, 19:09
    #38802665
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring AOP
rema174
Код: xml
1.
nested exception is java.lang.NoClassDefFoundError: org/aspectj/weaver/tools/PointcutDesignatorHandler

Вроде, всё очевидно ...
...
Рейтинг: 0 / 0
11.11.2014, 19:14
    #38802679
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring AOP
Есть доходчивая книга с туториалами по AOP

http://rutracker.org/forum/viewtopic.php?t=4537975
...
Рейтинг: 0 / 0
11.11.2014, 19:14
    #38802680
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring AOP
уже разобрался, думал что aspectjrt включает в себя aspectjweaver
...
Рейтинг: 0 / 0
11.11.2014, 19:28
    #38802700
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring AOP
mayton,
я по ней и делаю :) книга хорошая, но показано не все
...
Рейтинг: 0 / 0
12.11.2014, 12:27
    #38803305
Pavel Kurakin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring AOP
rema174mayton,
я по ней и делаю :) книга хорошая, но показано не все
К книге еще исходники есть.
...
Рейтинг: 0 / 0
13.11.2014, 12:44
    #38804728
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring AOP
Pavel Kurakin,
иногда полезнее делать пошагово, а не смотреть на готовое




новая непонятка:
Код: xml
1.
2.
3.
4.
5.
6.
7.
...
Caused by: java.lang.IllegalArgumentException: Unable to locate method [watchPerformance()] on bean [audience]
	at org.springframework.aop.config.MethodLocatingFactoryBean.setBeanFactory(MethodLocatingFactoryBean.java:76)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeAwareMethods(AbstractAutowireCapableBeanFactory.java:1572)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1540)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
	... 38 more



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
import org.aspectj.lang.ProceedingJoinPoint;

public class Audience {
	
	ProceedingJoinPoint joinpoint;
	
	public Audience() {
		
	}
	
	public Audience(ProceedingJoinPoint joinpoint) {
		this.joinpoint = joinpoint;
	}
	
	public void watchPerformance(ProceedingJoinPoint joinpoint) { 
		...
		joinpoint.proceed();
		...
	}

}



Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
	<bean id="audience" class="com.springinaction.springidol.Audience">
		<constructor-arg>
			<bean class="org.aspectj.lang.ProceedingJoinPoint" />
		</constructor-arg>
	</bean>
	<aop:config>
	
		<aop:aspect ref="audience">
			<aop:pointcut id="performance2"
				expression="execution(* com.springinaction.springidol.Performer.perform(..))" />
			<aop:around pointcut-ref="performance2" method="watchPerformance()" />
		</aop:aspect>
		
	</aop:config>
...
Рейтинг: 0 / 0
13.11.2014, 12:52
    #38804738
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring AOP
rema174,

А зачем у метода параметр?
...
Рейтинг: 0 / 0
13.11.2014, 12:58
    #38804746
YamahaR1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring AOP
rema174,

Код: xml
1.
2.
    
			<aop:around pointcut-ref="performance2" method="watchPerformance" />
...
Рейтинг: 0 / 0
13.11.2014, 12:59
    #38804748
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring AOP
Blazkowicz,

так этот метод объявлен в книге и
bookПервое, на что следует обратить внимание в реализации нового
совета, – он принимает параметр типа ProceedingJoinPoint . Этот объ-
ект необходим для вызова целевого метода внутри совета. Метод со-
вета выполнит все необходимые предварительные операции и, когда
будет готов передать управление целевому методу, вызовет метод
ProceedingJoinPoint.proceed().
...
Рейтинг: 0 / 0
13.11.2014, 13:00
    #38804751
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring AOP
YamahaR1rema174,

Код: xml
1.
2.
    
			<aop:around pointcut-ref="performance2" method="watchPerformance" />



спасибо, это ошибка книги
...
Рейтинг: 0 / 0
13.11.2014, 13:07
    #38804764
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring AOP
rema174спасибо, это ошибка книги
Так эта. Надо сразу прочитать на сайте все ошибки издания (errata). Раньше для всех популярных книг такое было.
...
Рейтинг: 0 / 0
13.11.2014, 19:49
    #38805458
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring AOP
Blazkowicz,

нету для этой книги, но в сорцах правильно.
...
Рейтинг: 0 / 0
18.12.2014, 15:34
    #38837233
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring AOP
Подскажите, чтобы aop сработал нужно, чтобы метод returnView был частью интерфейса?

Код: java
1.
@After("execution(* action.LoginAction.returnView(..))")
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring AOP / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]