Vaadin + Spring Boot错误:“无法增强@Configuration”和“定义了多个Servlet映射”

我是Spring和Vaadin的新手。 我正在尝试浏览视图导航教程 。

我想将来启用@Push来定期更新从DB获取的数据。

该项目非常非常简单。 我不使用配置类,也不使用任何XML – 仅Java注释。

任何人都可以帮我修复示例代码吗? 因为我收到了警告,我不知道可以用它做什么,忽略它们的结果是什么。

第一个是:

onClassPostProcessor : Cannot enhance @Configuration bean definition 'com.vaadin.spring.VaadinConfiguration' since its singleton instance has been created too early. The typical cause is a non-static @Bean method with a BeanDefinitionRegistryPostProcessor return type: Consider declaring such methods as 'static'.

另一个是只有当我添加compile("com.vaadin:vaadin-push")依赖时:

oautil.IOUtils : More than one Servlet Mapping defined. WebSocket may not work org.apache.catalina.core.ApplicationServletRegistration

AppMain

 import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class AppMain { public static void main(String[] args) { SpringApplication.run(AppMain.class, args); } } 

MyUI

 import com.vaadin.annotations.Theme; import com.vaadin.navigator.View; import com.vaadin.navigator.ViewDisplay; import com.vaadin.server.VaadinRequest; import com.vaadin.spring.annotation.SpringUI; import com.vaadin.spring.annotation.SpringViewDisplay; import com.vaadin.ui.*; import com.vaadin.ui.themes.ValoTheme; @Theme("valo") @SpringUI(path = "/ui") @SpringViewDisplay public class MyUI extends UI implements ViewDisplay { private Panel springViewDisplay; @Override protected void init(VaadinRequest request) { final VerticalLayout root = new VerticalLayout(); root.setSizeFull(); setContent(root); final CssLayout navigationBar = new CssLayout(); navigationBar.addStyleName(ValoTheme.LAYOUT_COMPONENT_GROUP); root.addComponent(navigationBar); springViewDisplay = new Panel(); springViewDisplay.setSizeFull(); root.addComponent(springViewDisplay); root.setExpandRatio(springViewDisplay, 1.0f); } @Override public void showView(View view) { springViewDisplay.setContent((Component) view); } } 

默认视图

 import com.vaadin.navigator.View; import com.vaadin.navigator.ViewChangeListener; import com.vaadin.spring.annotation.SpringView; import com.vaadin.ui.Label; import com.vaadin.ui.VerticalLayout; import javax.annotation.PostConstruct; @SpringView(name = DefaultView.VIEW_NAME) public class DefaultView extends VerticalLayout implements View { public static final String VIEW_NAME = ""; @PostConstruct void init() { addComponent(new Label("This is the default view")); } @Override public void enter(ViewChangeListener.ViewChangeEvent event) { // This view is constructed in the init() method() } } 

的build.gradle

 buildscript { ext { springBootVersion = '1.5.6.RELEASE' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } apply plugin: 'java' apply plugin: 'org.springframework.boot' version = '0.0.1-SNAPSHOT' sourceCompatibility = 1.8 repositories { mavenCentral() } ext { vaadinVersion = '8.1.0' } dependencies { compile('com.vaadin:vaadin-spring-boot-starter') compile("com.vaadin:vaadin-push") compile("org.springframework.boot:spring-boot-starter-logging") compile('org.springframework.boot:spring-boot-starter-web') testCompile('org.springframework.boot:spring-boot-starter-test') } dependencyManagement { imports { mavenBom "com.vaadin:vaadin-bom:${vaadinVersion}" } } 

application.properties

 server.port=8091