我正在尝试在scala vaadin应用程序中使用spring应用程序上下文和spring di,但我可以';无法获取要注入的数据源
我刚接触scala和vaadin,我只是在做实验。我试图在scala vaadin应用程序中使用spring应用程序上下文和spring di,但无法获得要注入的数据源。我不知道,也许我做了一些根本错误的事情,但以下是我的代码: web.xml我正在尝试在scala vaadin应用程序中使用spring应用程序上下文和spring di,但我可以';无法获取要注入的数据源,spring,scala,vaadin,Spring,Scala,Vaadin,我刚接触scala和vaadin,我只是在做实验。我试图在scala vaadin应用程序中使用spring应用程序上下文和spring di,但无法获得要注入的数据源。我不知道,也许我做了一些根本错误的事情,但以下是我的代码: web.xml <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/a
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<description>
Vaadin production mode</description>
<param-name>productionMode</param-name>
<param-value>false</param-value>
</context-param>
<servlet>
<servlet-name>Scalatest Application</servlet-name>
<servlet-class>com.vaadin.terminal.gwt.server.ApplicationServlet</servlet-class>
<init-param>
<description>Vaadin application class to start</description>
<param-name>application</param-name>
<param-value>com.example.scalatest.ScalaApp</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Scalatest Application</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
无法工作,ds在启动时为空。
有谁能指导我吗?您的主要问题是您的应用程序(ScalaApp)不是由Spring容器实例化的,而是由VaadinServlet实例化的——请确保它是这样的。有几种策略。以下是可以帮助您的示例项目: 还有几条建议 与其自己编写setter,不如在变量中添加@BeanProperty注释。Scala编译器将为变量生成setter和getter:
@BeanProperty private var dataSource:DataSource = _
甚至还有更好的方法-使用Spring基于注释的容器配置。如果您的上下文中只有一个类型为DataSource
的bean,只需将@Autowired
添加到变量中即可(上下文文件中不需要xml定义-您的类应注释为@Component):
详情如下:
var dataSource:DataSource = _;
def setDataSource(datasource:DataSource){
dataSource = datasource;
}
@BeanProperty private var dataSource:DataSource = _
@Component
class ScalaApp {
@Autowired private var dataSource:DataSource = _
}