Spring beans 没有被注入到 Vaadin 视图中

Sog*_*sps 0 vaadin spring-boot vaadin-flow

我已经下载了 Vaadin Flow 启动器并尝试使用它,但由于某种原因,bean 没有被注入:

@PageTitle("About")
@Route(value = "about", layout = MainLayout.class)
public class AboutView extends VerticalLayout {
    
    @Autowired
    private UserService userService;
    
    public AboutView() {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

userService 仍然为空。

我仍然可以通过构造函数传递 bean:

@PageTitle("About")
@Route(value = "about", layout = MainLayout.class)
public class AboutView extends VerticalLayout {
    public AboutView(UserService userService) {
        ...
    } 
}
Run Code Online (Sandbox Code Playgroud)

但这并不总是很方便。

我在同一个项目中创建了一个 REST 服务,即使没有注释,注入也能正常工作:

@RestController
@AllArgsConstructor
@RequestMapping("user")
public class UserController {

    private UserService userService;    
    ...
}
Run Code Online (Sandbox Code Playgroud)

Vaadin Flow 有什么问题?我正在使用 Vaadin Flow 24.0.0.alpha8、SpringBoot 3.0.1 和 Java 19。

PS顺便说一下,我也尝试过 Vaadin CDI 和 PayraMicro ,也有同样的问题。@EJB 和 @Inject 注释不起作用。

小智 5

字段注入发生在构造函数运行之后。使用@PostConstruct带注释的方法访问字段