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