Wicket的@SpringBean注释如何工作?

时间:2009-12-22 16:14:27

标签: java spring wicket

Wicket的@SpringBean注释如何工作?它是否在运行时使用反射?它是否会使编译器注入一些代码?或者是什么?

3 个答案:

答案 0 :(得分:28)

@SpringBean使用Wicket的underlying Injector mechanism。当您实例化Wicket组件时,Wicket组件基类的构造函数会内省正在实例化的类,以查找@SpringBean注释。如果找到了bean,那么Wicket会为spring bean生成一个代理并将其注入组件的字段中。这是Wicket相当于Spring的@Autowired注释,效果类似。

然而,它与Spring自己的上下文/类路径扫描功能(例如@Component)没有任何关系,这是关于自动发现什么是bean而不是bean,而不是什么与布线有关。

答案 1 :(得分:4)

标有@SpringBean注释的类必须具有以下之一:

  1. no-args构造函数
  2. 具有no-args构造函数的超类
  3. 实施界面
  4. 如果不满足这些条件,将抛出异常,因为Wicket将无法代理该类。

答案 2 :(得分:0)

Spring在运行时使用类加载器和ASM来查找所有带注释的类。

你可以configure spring应该搜索bean:

<context:component-scan base-package="some.package.to.start.from"/>

这将在内部使用ClassPathBeanDefinitionScannerPathMatchingResourcePatternResolver将使用MetadataReader查找类,使用基于ASM的{{3}}来读取注释。