Używam Spring 3.1.2.RELEASE z tkaniem czasu ładowania cglib i staram się uzyskać porady do pracy z metodą, która ma niestandardowe adnotacje i parametry z adnotacjami.Jak przekazywać argumenty do porady Spring AOP z przypisanymi parametrami?
Wskazówka:
@Aspect
public class MyAdvice
{
@Around("execution(@com.mycompany.locking.Lock * *(@com.mycompany.locking.LockVal(*), ..)) " +
"&& args(batch) && @args(propertyToLock)"
public Object lockAndProceed(ProceedingJoinPoint pjp, Object batch, LockVal propertyToLock) throws Throwable {
//Do stuff....
pjp.proceed();
}
}
Oto klasa I 'm testowania:
public interface UpdateManager
{
public void processUpdate(MyBatchObject batch);
}
public class UpdateManagerImpl implements UpdateManager
{
@Lock
public void processUpdate(@LockVal("lockValue") MyBatchObject batch)
{
//Do stuff...
}
}
Problem polega na tym, że nie mogę dostać rada wykonać. Jeśli usunę warunki @args i args w pointcut, podpowie się, ale muszę przekopać się przez ProceedingJoinPoint, aby uzyskać parametr, który jest mi potrzebny.
Dlaczego nie ma porady? Czy zrobiłem coś nie tak?
Edit: Poniższy punkt przekroju działa jako samodzielny program z wiosny:
@Aspect
public class MyAdvice
{
@Around("execution(@com.mycompany.locking.Lock * *(@com.mycompany.locking.LockVal(*), ..)) " +
"&& args(batch)"
public Object lockAndProceed(ProceedingJoinPoint pjp, Object batch) throws Throwable {
//Do stuff....
pjp.proceed();
}
}
Jednak to nie działa pod JBoss 6 stosując obciążenie w czasie tkania. Przypuszczam, że moim pytaniem powinno być zatem, dlaczego działa jako samodzielny program, ale nie pod JBoss 6?
Wiem, że ten jest stary, ale wciąż jest wymieniony jako nieodebrany. Czy mógłbyś zaakceptować i przyjąć moją odpowiedź, jeśli wydaje się to właściwe? Dzięki. – kriegaex
Przeniosłem się teraz z tego projektu, ale mogę powiedzieć, że kod nigdy nie działał, bez względu na to, jak go uruchomiłem. Jak pamiętam, miało to coś wspólnego z płaskim programem ładującym classloader + cglib w JBoss 6, który różni się od poprzednich wersji. – Brad