在UI中使用Spring + Vaadin注释@Autowired

时间:2016-08-05 14:06:28

标签: java spring jsp servlets vaadin

我正在使用Spring + Vaadin JSP集成。我正在为互联网商店的管理面板工作。 我已经完成了Spring服务器并成功添加了Vaadin UI,但vaadin UI中的注释(@Autowired等)无效,因为服务器分为两个servlet(dispacherServlet和vaadinServlet)。大多数服务器页面都与调度程序servlet一起使用,只有管理面板与Vaadin一起使用。我需要将JPA Repository和Service连接到vaadin UI。你可以帮我解决它并将服务连接到UI。 UI类:

@Theme("valo")
@Title("Administration panel")
@SpringUI
public class Administration extends UI {

    @Autowired
    LoginService service;  //null

    @Override
    protected void init(VaadinRequest request) {
        AbsoluteLayout layout = new AbsoluteLayout();
        setContent(layout);
        TabSheet tabs = new TabSheet();
        tabs.setSizeFull();
        UsersTab usersTab= new UsersTab();
        CategoriesTab categoriesTab = new CategoriesTab();
        tabs.addComponent(usersTab.getLayout());
        tabs.addComponent(categoriesTab.getLayout());
        layout.addComponent(tabs);
    }
    @WebServlet(urlPatterns = {"/administration","/administration/*","/VAADIN/*"},asyncSupported = true)
    @VaadinServletConfiguration(ui = Administration.class, productionMode = false)
    public static class AdministrationVaadinServlet extends VaadinServlet
    {
    }
}

1 个答案:

答案 0 :(得分:0)

要使Vaadin UI类为Spring托管bean,您不能使用在代码段中扩展的默认VaadinServlet。

在大多数情况下,您根本不需要提供servlet,但Vaadin Spring中的上下文侦听器会自动为您创建。如果由于某种原因需要对servlet进行一些自定义,那么扩展SpringVaadinServlet类而不是普通的VaadinServlet。

如果您使用的是Spring Boot,只需删除servlet声明即可。与非引导配置相同,但您需要在配置类中使用@EnableVaadin。如果您没有使用Spring Boot,请参阅link()以获取有关安装的更多说明。