我有兩個Maven的模塊:多模塊Maven的春天注入豆
邏輯(豆等Spring項目) - 包裝到的.jar
網絡(與春天,大自然Vaadin項目) - 數據包到.war
在網絡.pom我有依賴邏輯。在Java代碼自動裝配等是可以的。 我想在Web項目中使用來自邏輯的bean。
我的web.xml文件(Web項目):路徑:../src/main/webapp/WEB-INF
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext.xml
</param-value>
</context-param>
我的應用程序上下文:(路徑:../src/main/webapp/ WEB-INF)
<beans ...
<context:annotation-config />
<import resource="logic.xml"/>
<context:component-scan base-package="b2b"
annotation-config="true" />
logic.xml包含用於邏輯模塊豆配置。基本包名稱是b2b。
在UI I類有:
@Autowired
private CompanyService companyService;
我嘗試很多方法可以讓豆子,但始終companyService是啓動網絡後空。
我應該添加什麼來獲取Web模塊中可見的邏輯模塊的bean?
UI類:
@Theme("mytheme")
@SuppressWarnings("serial")
@Controller
public class MyVaadinUI extends UI
{ }
我也作出提到這裏vaadin V7:enter link description here
,但沒有幫助。
這是我的UI類:
enter code here
@Theme("mytheme")
@SuppressWarnings("serial")
@Controller
public class MyVaadinUI extends UI
{
SpringContextHelper helper = new SpringContextHelper(VaadinServlet.getCurrent().getServletContext());
private static Logger LOGGER = Logger.getLogger(MyVaadinUI.class);
@WebServlet(value = "/*", asyncSupported = true)
@VaadinServletConfiguration(productionMode = false, ui = MyVaadinUI.class, widgetset = "b2b.frontend.AppWidgetSet")
public static class Servlet extends VaadinServlet {
}
@Override
protected void init(VaadinRequest request) {
final VerticalLayout layout = new VerticalLayout();
layout.setMargin(true);
setContent(layout);
final CompanyService companyService = (CompanyService) helper.getBean("companyService");
Button button = new Button("Click Me");
button.addClickListener(new Button.ClickListener() {
public void buttonClick(ClickEvent event) {
//layout.addComponent(new Label("Thank you for clicking"));
LOGGER.info("pushed the button");
layout.addComponent(new Label("aa " +companyService +" Thank you for clicking"));
}
});
layout.addComponent(button);
}
}