我有一个文件Test.java,内容如下:
class MyClass{
private String myMember;
public String getMyMember(){ return this.myMember;}
public void setMyMember(final String myMember){this.myMember = myMember;}
}
public class Test implements Tasklet{
public RepeatStatus execute(final StepContribution contribution, final ChunkContext chunkContext) throws Exception {
// getting error here
List<MyClass> myClassList= this.myJdbcTemplate.query(myQuery,
ParameterizedBeanPropertyRowMapper.newInstance(MyClass.class));
return RepeatStatus.FINISHED;
}
}
Tasklet是一个弹簧批处理界面。
我收到如下错误:
org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.mypackage.MyClass]: Is the constructor accessible?; nested exception is java.lang.IllegalAccessException
错误的原因是什么?
如何解决?
感谢阅读!
答案 0 :(得分:3)
MyClass
应为public
,并且可以选择公开默认构造函数:
public class MyClass() {
public MyClass() {
}
}
您希望ParameterizedBeanPropertyRowMapper
返回List<MyClass>
,而MyClass
是私有的。
如果ParameterizedBeanPropertyRowMapper
不公开,那么Spring MyClass
将不会意识到MyClass
的存在。