【发布时间】:2016-02-29 09:19:08
【问题描述】:
我有一个 vaadin 项目,我需要使用 @Autowired Spring 注释。所以我使用了 vaadin-spring 插件
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-spring</artifactId>
<version>1.0.0</version>
</dependency>
现在,如果我在 UI 类中定义自动装配类,它可以正常工作。但是如果我在另一个类中定义自动装配类,这个类总是空的。例如,在这种情况下,“serv”始终为 null。
@SuppressWarnings("serial")
public class ProfileWindow extends Window {
@Autowired
private Servizio serv;
...
...
private Component buildFooter() {
HorizontalLayout footer = new HorizontalLayout();
footer.addStyleName(ValoTheme.WINDOW_BOTTOM_TOOLBAR);
footer.setWidth(100.0f, Unit.PERCENTAGE);
Button ok = new Button("OK");
ok.addStyleName(ValoTheme.BUTTON_PRIMARY);
ok.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
Dati dd = new Dati(Double.parseDouble(nomeField.getValue()), Double.parseDouble(cognomeField.getValue()));
String out = serv.converti(dd);
Notification success = new Notification(out);
success.setDelayMsec(2000);
success.setStyleName("bar success small");
success.setPosition(Position.BOTTOM_CENTER);
success.show(Page.getCurrent());
BsciEventBus.post(new ProfileUpdatedEvent());
close();
}
});
ok.focus();
footer.addComponent(annulla);
footer.setComponentAlignment(annulla, Alignment.TOP_LEFT);
footer.addComponent(ok);
footer.setComponentAlignment(ok, Alignment.TOP_RIGHT);
return footer;
}
}
ServizioImpl.java
@SpringComponent
public class ServizioImpl implements Servizio {
@Override
public String converti(Dati dati) {
//implementation...
return "out";
}
}
你能帮我使用自动连线注释吗?
您有一些示例代码可以推荐吗?我不明白如何解决这个问题。 如果我在 ProfileWindow 上使用 @SpringComponent,自动装配的注释还不起作用。
谢谢
【问题讨论】:
-
Spring 只能在它创建的对象中自动装配字段。它无法知道您已经手动创建了一个新实例。因此
ProfileWindow也必须是一个 Spring 组件,并且您必须从 Spring 上下文中获取它的实例,以便它的字段与其他组件的实例自动装配。 -
抱歉,如果我在
ProfileWindows上使用@SpringComponent,自动连线不起作用。有没有办法在某个地方定义 Servizio bean,以便它可以被任何类调用?我会在 applicationContext.xml 中注册它 -
使服务 bean 全局 可用是困难的(并非不可能),但它可能不是正确的做法。在更改
ProfileWindow后显示一些代码。您如何获得实例?您是否在构造函数中使用自动装配字段? (PS 欢迎来到 SO,在回复某人的评论时,您可以使用 @username 以便他们收到您的回复的通知)
标签: spring vaadin autowired vaadin7 spring-annotations