我在vaadin中写了一个菜单栏作为自定义布局。它有一个注销按钮,可自动定制一个Session变量。 autowired变量只能在构造之后使用,所以我添加了一个用PostConstruct注释的init方法:
public class Menu extends HorizontalLayout{
private Button logout = new Button("Logout");
@Autowired
private Session session;
@PostConstruct
private void init(){
logout.addClickListener((event) -> {
session.unsetUser();
Notification.show("Good bye");
getUI().getNavigator().navigateTo(LoginView.NAME);
});
addComponent(logout);
}
}
由于它不是SpringBean,PostConstruct永远不会运行。我该如何克服这个问题?