Spring AOP is proxy based. Unless otherwise noted, Spring AOP performs runtime driving.
Weaving: binding aspects to other types of applications or objects to create a recommended object. This can be done at compile time (using the AspectJ compiler, for example), load time, or at run time. Spring AOP, like other pure Java AOP frameworks, weaves at runtime.
Source: http://docs.spring.io/spring/docs/4.0.1.RELEASE/spring-framework-reference/htmlsingle/#aop-introduction-defn
However, you can configure Spring to do the loading in time. Check out the Spring documentation on how to do this: http://docs.spring.io/spring/docs/3.2.0.RELEASE/spring-framework-reference/htmlsingle/#aop-aj-ltw
Among other things, you would use @EnableLoadTimeWeaving in your Java Config class. The setup is pretty straightforward and your @Aspect classes @Aspect not change.
Developers simply modify one or more files that form the application context to enable weaving at boot time, rather than relying on administrators who are usually responsible for deploying the configuration, such as running a script
Angad source share