属性'dataSource'的Jdbc Spring是必需的或NullPointer

时间:2014-10-31 12:13:32

标签: java spring jdbc

compile()完成后运行mapRow时。错误给了我Property 'dataSource' is required。我在我的xml上有这个

<bean id="ProcedureRepository" class="mypackage.ProcedureRepository">
    <property name="dataSource" ref="dataSource"/>
</bean>

我的java ProcedureRepository

private DataSource dataSource;

@Resource
@Qualifier("dataSource")
public void setDataSource(DataSource dataSource) {
    this.dataSource = dataSource;
}

public String searchCode(String code){
    new SeachCode(dataSource).execute(code);
    return code;
}

我的SeachCode

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

compile();

当我这样称呼它时会发生:

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

我不知道我在哪里丢失,我试图在我的xml中添加新bean,但没有成功,同样在setDataSource添加新的SearchCode

1 个答案:

答案 0 :(得分:0)

使用new创建存储库时,只需获取一个不受Spring容器管理的对象。如果你想获得一个Spring bean,它有Spring注入的所有依赖项,你可以从Spring应用程序上下文中获取它。 例如:

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

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