我有一个具有以下依赖关系的层次结构:
Base(Timer timer)
Timer(PublisherService service, BaseDao userDao, DataProcessor processor)
里面还有其他依赖项,DataProcessor
但我不会走那么远,因为看来我的错误发生的时间早得多。与该依赖关系图相对应,我具有以下Spring配置:
<bean id="base" class="com.apps.consumer.Base">
<constructor-arg name="timer" ref="consumerTimerTask"/>
</bean>
<bean id="consumerTimerTask" class="com.apps.consumer.ConsumerTimerTask">
<constructor-arg name="service" ref="tradePublisherService"/>
<constructor-arg name="userDao" ref="userDao"/>
<constructor-arg name="consumerDataProcessor" ref="consumerDataProcessor"/>
</bean>
<bean id="tradePublisherService" class="com.apps.consumer.common.TradePublisherService"/>
<bean id="userDao" class="com.apps.dao.UserDao"/>
<bean id="consumerDataProcessor" class="com.apps.consumer.ConsumerDataProcessor">
<!-- Additional constructor-args here for this guy -->
</bean>
在应用程序的顶层,我将运行:
ApplicationContext context = new ClassPathXmlApplicationContext("spring-configuration.xml");
Base consumerBase = context.getBean("base", Base.class);
在进行调试时,我发现Timer
初始化成功。。。有些。在Timer
完全解析并注入之前,Base
我得到以下信息:
java.lang.ArrayIndexOutOfBoundsException: 3145
at org.springframework.asm.ClassReader.readClass(Unknown Source)
at org.springframework.asm.ClassReader.accept(Unknown Source)
at org.springframework.asm.ClassReader.accept(Unknown Source)
at org.springframework.core.LocalVariableTableParameterNameDiscoverer.visitConstructor(LocalVariableTableParameterNameDiscoverer.java:123)
at org.springframework.core.LocalVariableTableParameterNameDiscoverer.getParameterNames(LocalVariableTableParameterNameDiscoverer.java:89)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:189)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:984)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:886)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:479)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:600)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:140)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:984)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:886)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:479)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:557)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:842)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:416)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at com.apps.Main.contextInitialized(Main.java:39)
我一直在追溯它,Main
这是我的堆栈跟踪中唯一的类。
删除Java和XML中的所有三个构造函数参数都可以解决此问题,但是引入3个构造函数参数中的任何一个都会使它返回。DataProcessor
例如,依赖关系图确实会更深一些,但是即使我只是将其BaseDao
用作构造函数args,而它本身没有依赖关系,我也会遇到此错误。
知道这里发生了什么吗?我尝试了各种构造函数args的排列,创建了新的接口实现,以防现有接口中的某些问题导致问题冒泡,几乎所有需要更仔细地从头重写此代码的事情。
编辑:
public class Base {
private TimerTask consumerTimerTask;
private static Logger logger = LoggerFactory.getLogger(Base.class);
public Base(TimerTask timer) {
this.consumerTimerTask = timer;
}
/**
* Initialize the timer.
* @throws Exception
*/
public void initialize() throws Exception {
final int updateFrequency = 10000;
// Once all fields have been generated and prefs read, initialize the update process every number of seconds.
final Timer updateTimer = new Timer();
updateTimer.scheduleAtFixedRate(this.consumerTimerTask, 0, updateFrequency);
logger.info("Base initialized successfully!");
}
}
由于代码是继承的,因此我忽略了以下依赖项的版本:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
设置<spring.version>4.2.4.RELEASE</spring.version>
解决了该问题。
问题内容: 我尝试运行以下代码。顺便说一句,我是python和sklearn的新手。 其中y是0和1的np.ndarray 我收到以下信息: 文件“ C:\ Anaconda3 \ lib \ site-packages \ sklearn \ linear_model \ logistic.py”,行> 1174,适合check_classification_targets(y) 文件“ C:\
问题内容: 我从文件中读取了编码为“ UTF-8”的字符串。我需要将其与表达式匹配。文件的第一个字符为,但字符串中的第一个字符为(空符号)。我已经将其翻译为具有字符集“ UTF-8”的字节,这里是。有谁知道它是什么以及如何使用正则表达式解决它? 问题答案: 一些编辑器(如记事本)在保存UTF-8文本时会添加BOM(字节顺序掩码)签名。从此类文件中读取字符串之前,应检查0xEF,0xBB,0xBF字
我在学春靴。我想引用MySQL数据并在Thymeleaf中显示MySQL数据。但是,我得到以下错误: java.sql.sqlsyntaxerroreXception:“字段列表”中的未知列“employee0_.Department_Department_ID”。 另外,我想设置为从Employee类引用Department类。(@manytoone)但是我不确定当前的实体类和MySQL设置是否
未知问题 未知问题记录机器人没能回答的用户问题,用户可以进行批量操作,还可以为这些问题配置成业务问答,提高机器人问题回答率。 如下图可以讲未知问题配置成业务问答:
我不知道如何为所有文件类型添加自定义元数据,如txt,doc,docx,xls,xlsx,ppt,pptx,pdf等。我已经尝试使用文件类setAttribute()方法为txt文件添加自定义元数据,但我得到了错误。 我没有得到我要错的地方...我得到了下面的错误
问题内容: 我刚开始使用Laravel,却遇到以下错误: 未知列’updated_at’插入gebruikers(naam,wachtwoord,updated_at,created_at) 我知道错误是由您在迁移表时的时间戳列引起的,但我没有使用该字段。我遵循Laravel教程时曾经使用它,但是现在我正在制作(或尝试制作)自己的东西。即使不使用时间戳,我也会收到此错误。我似乎找不到使用它的地方。