@SpringBean
Wicket 的注解是如何工作的?它在运行时使用反射吗?它会让编译器注入一些代码吗?或者是什么?
16021 次
3 回答
29
@SpringBean
使用 Wicket 的底层 Injector 机制工作。当您实例化一个 Wicket 组件时,Wicket 组件基类的构造函数会内省被实例化的类,并寻找@SpringBean
注解。如果找到了 bean,那么 Wicket 会为 spring bean 生成一个代理并将其注入到组件的字段中。这是Wicket相当于Spring的@Autowired
注解,效果差不多。
然而,它与 Spring 自己的上下文/类路径扫描功能(例如@Component
)没有任何关系,它是关于自动发现什么是和不是 bean,而不是与布线有关。
于 2009-12-23T13:21:17.183 回答
5
标有 @SpringBean 注释的类必须具有以下之一:
- 无参数构造函数
- 具有无参数构造函数的超类
- 实现一个接口
如果不满足这些条件,则会引发异常,因为 Wicket 将无法代理该类。
于 2012-02-11T10:36:19.460 回答
0
Spring 在运行时使用类加载器和 ASM 来查找所有带注释的类。
您可以配置spring 应该在哪里搜索 bean:
<context:component-scan base-package="some.package.to.start.from"/>
这在内部使用ClassPathBeanDefinitionScanner,它将使用PathMatchingResourcePatternResolver来查找类,并使用基于 ASM 的MetadataReader来读取注释。
于 2009-12-22T16:27:30.430 回答