How does Wicket's @SpringBean
annotation work? Does it use reflection at run time? Does it make the compiler inject some code? Or what?
@SpringBean
works using Wicket's underlying Injector mechanism. When you instantiate a Wicket component, the constructor of Wicket's component base class introspects the class being instantiated, looking for the @SpringBean
annotation. If the bean is found, then Wicket generates a proxy for the spring bean and injects it into the component's field. This is Wicket's equivalent of Spring's @Autowired
annotation, the effect is similar.
It doesn't, however, have anything to do with Spring's own context/classpath scanning functionality (e.g. @Component
), which is about auto-discovery of what is and isn't a bean, rather having anything to do with wiring.