【发布时间】:2019-12-19 12:19:21
【问题描述】:
各位程序员大家好!我对 Vaadin 比较陌生,所以请放过我。 我正在尝试将我的服务层自动连接到我的视图中,如下所示:
@Route("")
@PWA(name = "First time bruh", shortName = "Project Base")
public class MainView extends VerticalLayout {
private TextField filterText = new TextField();
private Grid<Customer> grid = new Grid<>(Customer.class);
private CustomerForm customerForm = new CustomerForm(this);
@Autowired
private CustomerService customerService;
并且 customerService 依赖注入可以正常工作,但是当我尝试在组件中使用它时,它返回 null:
@Route
public class CustomerForm extends FormLayout {
@Autowired
private CustomerService customerService;
我尝试使用 @Component 和 @SpringComponent 注释类,但依赖注入不起作用,我认为问题不在于该类不是 bean,因为 MainView 类也不是豆子。
我的愿望是我创建的自定义子组件可以访问服务层。
提前感谢您的帮助!
【问题讨论】:
-
您是使用
new CustomerForm()自己创建customerForm,还是实际的Route?如果是前者,注射就不行了。如果是后者,您是否尝试在构造函数中访问注入的服务?因为字段注入属性是在 构造函数完成后注入的 - 在这种情况下,您应该使用构造函数注入(将服务添加为构造函数的参数,并删除字段上的自动装配注释) -
@KasparScherrer 我删除了 Route 注释并尝试了您的建议:
public CustomerForm(MainView mainView, CustomerService customerService) { this.mainView = mainView; this.customerService = customerService;但它仍然为空。 -
@AlexVulchev,您可能会从这篇解释 Spring 和 Vaadin 的依赖注入和控制反转的文章(或视频)中受益:vaadin.com/blog/…Cheers!
标签: java spring dependency-injection vaadin