SpringVaadinIntegration アドオン全体で Spring と Vaadin を使用してアプリケーションを開発しています。現在、メインの Vaadin UI クラスにサービスを注入すると、すべてがうまく機能します。問題は、この注釈を他のクラスで使用することです。
これはマイサービスです
@Component
@Scope("session")
public class MyService {
public MyService() {
// TODO Auto-generated constructor stub
}
public String getLabel(){
return "this is my label";
}
public void saveUser(Utente utente){
System.out.println("save user");
}
}
これは私のメインの Vaadin UI クラスです
@Component
@Scope("prototype")
public class MyUI extends UI
{
@Autowired
private transient ApplicationContext applicationContext;
@Autowired
private MyService myService;
private MainPanel mainPanel;
private VerticalLayout verticalLayout;
@Override
protected void init(VaadinRequest request) {
// TODO Auto-generated method stub
verticalLayout = new VerticalLayout();
mainPanel = new MainPanel();
verticalLayout.addComponent(mainPanel);
setContent(verticalLayout);
}
}
MyUI では @autowired が機能し、実際には myservice は null ではありませんが、メイン パネルでは機能しません
@Component
public class MainPanel extends CustomComponent implements View {
private VerticalLayout mainLayout;
private Button button;
@Autowired
MyService secondService;
public MainPanel() {
buildMainLayout();
setCompositionRoot(mainLayout);
// TODO add user code here
}
@AutoGenerated
private VerticalLayout buildMainLayout() {
// common part: create layout
button = new Button();
mainLayout = new VerticalLayout();
mainLayout.addComponent(button);
button.addClickListener(new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
// TODO Auto-generated method stub
secondService.saveUser(new Utente());
}
});
return mainLayout;
}
}
ここでユーザーを保存しようとすると、サービスは null です。私は何を間違っていますか?