我们使用普通的@Inject批注,但是我们需要对此AbstractVM进行扩展才能使其正常工作:
public abstract class AbstractVM { public AbstractVM() { this.autowire(this); } protected final void autowire(Object object) { this.getApplicationContext().getAutowireCapableBeanFactory() .autowireBean(object); this.getApplicationContext().getAutowireCapableBeanFactory() .initializeBean(object, null); } protected final ApplicationContext getApplicationContext() { return WebApplicationContextUtils .getRequiredWebApplicationContext(Executions.getCurrent() .getDesktop().getWebApp().getServletContext()); }}所以是vm的示例:
import javax.inject.Inject;public class OverviewVM extends AbstractVM { @Inject private NotaService notaService; @Inject private ContactService contactService;编辑:
@Dunni的评论是正确的。
您不能在构造函数中使用自动装配的Bean。我以前的解决方案是MVVM,但是对于MVC,您需要将该代码放置在
doBeforeCompose或
doAfterCompose方法中而不是在构造函数中。(从中覆盖
SelectorComposer)



