Oglądam tutorial "cave of programming" i koleś mówi o tym, że jak dorzucamy interfejs do klasy która ma joint pointy to spring nie pozwala potem na konwersję na tę klasę, bo ona się robi jakimś tam proxy czyli jakąś tam nową klasą, która nie jest instancją tej pierwotnej. Czyli tak o:
public class Camera {
public Camera() {
System.out.println("Constructor.");
}
public void snap() {
System.out.println("SNAP!");
}
}
@Aspect
@Component
public class Logger {
@Before ("execution(void com.julian.spring.aop.Camera.snap())")
public void aboutToTakePhoto() {
System.out.println("About to take the photo...");
}
}
i dopiszę implements MyInterface
to ma nie zadziałać to:
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("com/julian/spring/aop/beans.xml");
Camera camera = (Camera) context.getBean("camera");
camera.snap();
context.close();
ALE MI WSZYSTKO DZIAŁA.
Koleś pokazywał rozwiązanie: dopisanie do springowego xml: <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>
albo zadeklarowanie wszystkich metod w tym interfejsie dodanym.
A mi działa bez tego rozwiązania, Czy w nowych wersjach springa problem już nie występuje?