wicket @SpringBean无法创建bean
我有一个关于Eclipse,Wicket,Spring,Hibernate的项目。 除了:当我尝试时,每件事都是正常的
public class SortableContactDataProvider extends SortableDataProvider { @SpringBean private Service service; public Iterator iterator(int first, int count) { //SortParam sp = getSort(); return service.findAllUsers().subList(0, 15).iterator(); } ...
服务变量是null? 在我使用这个构造的任何其他地方,“服务”不是空的并且运行良好。 请帮我解决这个问题。
@SpringBean仅适用于Component的任何子类。
您需要在构造函数中执行以下操作
Wicket 1.4
InjectorHolder.getInjector().inject(this);
Wicket 1.5+
org.apache.wicket.injection.Injector.get().inject(this);
请参阅’通用IDataProvider实施’@ http://stronglytypedblog.blogspot.com/2009/03/wicket-patterns-and-pitfalls-1.html
请享用
对于那些是Wicket / Spring环境的新手来说,更多的上下文 – 正如bert所指出的那样,@ SpringBean只能在Component的任何Subclass中工作,所以你需要手动驱动注入。 这是一个两步过程:
在你的class级推动注射,如下:
public class SortableContactDataProvider extends SortableDataProvider { @SpringBean private Service service; public SortableContactDataProvider(){ Injector.get().inject(this); // set up the injection } public Iterator iterator(int first, int count) { return service.findAllUsers().subList(0, 15).iterator(); } }
并确保Injector在Wicket应用程序中设置 – 类似于:
public WicketApplication @Override protected void init() { // make sure Spring injector is available and set up getComponentInstantiationListeners().add(new SpringComponentInjector(this)); } }