Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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
Java Jdbc Spring位于Property';数据源';是必需的或空指针_Java_Spring_Jdbc - Fatal编程技术网

Java Jdbc Spring位于Property';数据源';是必需的或空指针

Java Jdbc Spring位于Property';数据源';是必需的或空指针,java,spring,jdbc,Java,Spring,Jdbc,当我在mapRow完成后运行compile()时。错误告诉我属性“dataSource”是必需的。我的xml上有这个 <bean id="ProcedureRepository" class="mypackage.ProcedureRepository"> <property name="dataSource" ref="dataSource"/> </bean> 我的密码 public class SearchCode extends Stored

当我在
mapRow
完成后运行
compile()
时。错误告诉我属性“dataSource”是必需的。我的xml上有这个

<bean id="ProcedureRepository" class="mypackage.ProcedureRepository">
    <property name="dataSource" ref="dataSource"/>
</bean>
我的密码

public class SearchCode extends StoredProcedure{
public SearchCode(DataSource dataSource) {
    super(dataSource, "MYPROC");
...

compile();
当我称之为:

ProcedureRepository procedureRepository = new ProcedureRepository();
procedureRepository.searchCode(parameters.code);

我不知道我遗漏了什么,我尝试在我的xml中添加新bean,但没有成功,在
SearchCode
添加新的
setDataSource
也没有成功,当您使用
new
创建存储库时,您只得到了一个不受Spring容器管理的对象。如果您想要获得一个Springbean,它具有Spring注入的所有依赖项,那么您可以从Spring应用程序上下文获得它。 例如:

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("path to spring app context xml file)");    
ProcedureRepository repo= (ProcedureRepository) applicationContext.getBean("ProcedureRepository");
repo.searchCode(parameters.code)

您可以阅读有关从Spring应用程序上下文获取bean的更多信息。

不要自己创建新实例。从上下文中使用bean。这是我唯一能做到的方法吗?如果我不想使用路径怎么办?我的web.xml已经在context上了。因此,如果它是一个webapp,那么应该在启动时使用web.xml中定义的ContextLoaderListener初始化spring context。在这种情况下,您可以创建某种服务,它将使用您的存储库或控制器。只需在应用程序上下文中定义它,并使用setter或构造函数注入将存储库设置为依赖项。
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("path to spring app context xml file)");    
ProcedureRepository repo= (ProcedureRepository) applicationContext.getBean("ProcedureRepository");
repo.searchCode(parameters.code)