Java 类构造函数arg导致异常
我正在尝试创建一个将类作为构造函数参数的bean:Java 类构造函数arg导致异常,java,eclipse,spring,tomcat,Java,Eclipse,Spring,Tomcat,我正在尝试创建一个将类作为构造函数参数的bean: public class DummyDao<T> { private final Class<T> entityClass; public DummyDao(final Class<T> entityClass) { this.entityClass = entityClass; } public void doSomething() { S
public class DummyDao<T> {
private final Class<T> entityClass;
public DummyDao(final Class<T> entityClass) {
this.entityClass = entityClass;
}
public void doSomething() {
System.out.println("My class is " + entityClass);
}
}
我的Spring配置中有以下内容:
<bean id="dummyDao" class="com.example.dao.DummyDao">
<constructor-arg>
<value type="java.lang.Class" >com.example.dao.SampleDto.class</value>
</constructor-arg>
</bean>
一旦应用程序运行,找到com.example.dao.SampleDto.class或将其传递给DummyDao的构造函数就没有问题了——我可以用Java代码来完成这项工作——因此我只能断定问题是由Spring初始化期间活动的类装入器引起的。从堆栈跟踪可以清楚地看出,这是一个Tomcat加载程序
但是,如果我创建一个普通的老bean,其中有一个DummyDao作为字段,那么没有问题:
public class Consumer {
private DummyDao<SampleDto> dummyDao = new DummyDao<SampleDto>(SampleDto.class);
public Consumer() {
System.out.println("**Consumer constructor: dummyDao=" + dummyDao);
}
}
<bean id="consumer" class="com.example.dao.Consumer" />
公共类消费者{
私有的DummyDao DummyDao=新的DummyDao(SampleDto.class);
公众消费者(){
System.out.println(“**使用者构造函数:dummyDao=“+dummyDao”);
}
}
消息“**使用者构造函数:dummyDao=com.example.dao。DummyDao@23dd246“将显示在日志中
有人能建议解决这个问题吗?Spring没有使用类文本,因此您可以使用
<value type="java.lang.Class" >com.example.dao.SampleDto</value>
com.example.dao.SampleDto
谢谢,这就解决了问题。我应该意识到:如果我使用Class.forName(),我就不会包括“.Class”。
public class Consumer {
private DummyDao<SampleDto> dummyDao = new DummyDao<SampleDto>(SampleDto.class);
public Consumer() {
System.out.println("**Consumer constructor: dummyDao=" + dummyDao);
}
}
<bean id="consumer" class="com.example.dao.Consumer" />
<value type="java.lang.Class" >com.example.dao.SampleDto</value>