Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我正在尝试在scala vaadin应用程序中使用spring应用程序上下文和spring di,但我可以';无法获取要注入的数据源_Spring_Scala_Vaadin - Fatal编程技术网

我正在尝试在scala vaadin应用程序中使用spring应用程序上下文和spring di,但我可以';无法获取要注入的数据源

我正在尝试在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

我刚接触scala和vaadin,我只是在做实验。我试图在scala vaadin应用程序中使用spring应用程序上下文和spring di,但无法获得要注入的数据源。我不知道,也许我做了一些根本错误的事情,但以下是我的代码:

web.xml

<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 = _ 
}