When you have an AOP annotation on a class that implements an interface, spring creates a
java proxy class that implements the interface. When the proxy is called, it calls the aspect and your class. If your class doesn't implement interface, spring cannot use java proxy, so it falls back to using cglib, which creates a class that extends your class. So, the differrence is when you implement interface spring creates a class that implements the interface, when you don't implement interface, spring creates a class that extends your class
Now, during auto wiring, if it has a proxy class that implements the AdminDAO interface, it cannot inject it I to a property of type admindaoimpl. Once you changed your auto wiring to inject the interface, it worked