, burada , tao.zhang.Listener içinde sadece bazı metni yazdırır .xmlBu Spring AOP pointcut neden tetiklenmedi?
<bean id="aoplistener" class="tao.zhang.Listener"/>
<aop:config>
<aop:aspect ref="aoplistener">
<aop:pointcut id="whenCalled" expression="execution(* callme(..))" />
<aop:after method="scream" pointcut-ref="whenCalled" />
</aop:aspect>
</aop:config>
yöntem çığlık() var ve olması gerekiyordu Bir yöntem callme() çağrıldığında çalıştırılır.
ben callme() log tarafından çağrılan bir sahiptir logger denilen fasulye yöntemleri log() ve callme()
public void log(){
callme();
System.out.println("Hello from logger ~~~~~~~~~~~~~~~~~~~");
}
public void callme(){
System.out.println("I'm called");
}
Not()
Şimdi bir var var
<task:scheduler id="myScheduler" pool-size="10"/>
<task:scheduled-tasks scheduler="myScheduler">
<task:scheduled ref="logger" method="log" fixed-rate="5000"/>
</task:scheduled-tasks>
Garip çığlık(): log() her 5 saniyede çağıran zamanlayıcı çağrılan değil ama callme() doğrudan çağrılıp çağrılmadığını:
<task:scheduler id="myScheduler" pool-size="10"/>
<task:scheduled-tasks scheduler="myScheduler">
<task:scheduled ref="logger" method="callme" fixed-rate="5000"/>
</task:scheduled-tasks>
çığlık() çağrılır!
Herhangi bir öneriniz var mı? Bana öyle geliyor ki bu pointcut başka bir metodun içinde denilen metotlarla uyuşmuyor ...
Evet, Çok teşekkürler! Ben bu cümleyi bahar el kitabından çiğniyordum: 'Spring AOP sadece Spring beans' için – Tao
metod yürütme katılma puanlarını destekliyor, Spring'in nasıl çalıştığını bilmek için bana çok yardımcı oldu. Fantezi (AOP dahil) herhangi bir şey yaparsa, size gereken müdahale noktalarını içeren bir proxy nesnesi verir. Bu vekil nesneyi - eğer çekecekseniz - eğer fasülye üzerinde _all_ çağrılarını yapmanız gerekiyor ve Spring'in arkasından “bu” ile çağrı yapmamanız gerekir. '' Bu, 'örtüktür'. –
Şimdi Spring AOP'nin birçok durumda pek kullanışlı olmadığını hissediyorum. Benim şu anki projemde, callme() çağrıldığında bazı günlükleri almak istiyorum ve callme(), bu sınıftaki çeşitli yöntemlerle bir alt-rutin olarak kullanılıyor, ki bu çok yaygın bir durum. – Tao