【问题标题】:Spring boot, Vaadin - cant autowire Service in a ViewSpring boot,Vaadin - 无法在视图中自动装配服务
【发布时间】:2023-03-21 03:22:01
【问题描述】:

我有带有 vaadin 和 vaadin4spring 插件的 Spring Boot 应用程序。 在我的视图中,我想显示数据库中的数据。我要显示的数据由服务类中的方法返回。

@Service
public class UserService {
    public List<Users> getUsers() ....
}

查看:

@SpringView(name = Views.USERLIST) //static constant containing string "users"
public class UserlistView extends HorizontalLayout implements View {
    @Autowired
    private UserService userService;
    @PostConstruct
    public void construct() {
        displaytable(userService.getUsers());
    }
    @Override
    public void enter(ViewChangeListener.ViewChangeEvent viewChangeEvent) {}

}

UI class:

@SpringUI
@Theme("valo")
public class TUI extends UI {
        @Autowired
        private SpringViewProvider springViewProvider;

        protected void init(VaadinRequest request) {
          ..
          Navigator navigator = new Navigator(this, content);
           navigator.addView(Views.USERLIST, UserlistView.class);
          navigator.addProvider(springViewProvider);

        }
}

在服务器启动期间 vaadin 识别 springview -“c.v.spring.navigator.SpringViewProvider : 1 SpringView found”,不显示异常或警告。

每次我使用导航器显示视图 (navigator.navigateTo("users")) 时,视图中的自动装配字段都不会注入,也不会调用后处理方法。如果我不将视图添加到导航器对象并使用 url 直接访问视图,那就更奇怪了 - localhost:8080/#!users 字段将被正确注入并调用方法construct()。

如果有帮助的话,我的配置类

@Configuration
@ComponentScan(basePackages = { "me.project" })
@EnableAutoConfiguration
@EnableVaadinEventBus
public class TheConfig {
    // contains only one bean definition - sessionfactory
}

有没有人遇到过类似的问题?我无法在任何地方找到帮助,谁能告诉我我做错了什么。 谢谢

【问题讨论】:

  • 您找到解决方案了吗?我有类似的问题,V_J 的回答不起作用。
  • 尝试在 UI 中添加 viewdisplay,并将您的视图添加到 viewdisplay。我有同样的问题,但使用 viewdisplay 解决了。

标签: java spring vaadin


【解决方案1】:

当你这样做时

navigator.addView(Views.USERLIST, UserlistView.class);

它创建了一个StaticViewProvider,Spring 不处理它并使用“new”创建一个视图。所以'addView'不会发生弹簧自动装配 如果你使用 springViewProvider 自动装配由 Spring 处理。

所以在使用Spring+Vaadin时不要使用navigator.addView(),而是依赖springViewProvider

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-24
    • 2020-04-29
    • 2019-01-10
    • 2018-12-27
    • 2021-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多