在spring中配置了一个简单的quartz任务,结果报错:
Failure obtaining db row lock: 第 1 行: 只有 DECLARE CURSOR 才允许使用 FOR UPDATE 子句。
只有 DECLARE CURSOR 才允许使用 FOR UPDATE 子句
at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:368)
at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2816)
at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2254)
at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:631)
at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:477)
at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:777)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:91)
at org.quartz.impl.jdbcjobstore.StdRowLockSemaphore.executeSQL(StdRowLockSemaphore.java:92)
很郁闷,以为是事务控制的问题。
结果最后发现是自动配置(quartz)的问题。
spring的SchedulerFactoryBean中有个dataSource属性。如果这个属性不为空,则用数据库来持久化储存quartz的任务。结果正好我的spring中的DataSource的名字就叫dataSource,结果就导致了上面的错误。
这个哥们也遇到了同样的问题:
http://www.iteye.com/topic/38871
所以spring的autowire还是尽量少用为好。
分享到:
相关推荐
Spring框架是Java开发中不可或缺的一部分,它以其强大的依赖注入(Dependency Injection,简称DI)特性而闻名,其中自动装配(Auto-Wiring)是DI的一种实现方式。自动装配允许开发者减少手动配置bean之间的依赖关系...
在Spring的XML配置文件中,可以通过`<beans>`标签的`autowire`属性来全局设置自动装配策略,或者在单个`<bean>`标签中通过`autowire`属性指定某一个bean的自动装配方式。 4. 使用注解进行自动装配 Spring 2.5引入了...
标题中的“Spring自动装配”指的是Spring框架中的一个重要特性,它允许开发者在不显式配置Bean依赖的情况下,由Spring容器自动管理Bean之间的依赖关系。这一特性极大地简化了代码,提高了可维护性和可测试性。 在...
<bean autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> ``` 这种方式的优点是简单易用,但也存在一些缺陷,如定时任务信息都会保存在内存中,因此服务器重启后这些...
Spring自动装配的方式和举例、以及@Qualifier、@Autowire、@Resource的使用。
### Spring自动装配模式详解 #### 一、引言 在Spring框架中,自动装配是一种非常实用的功能,可以简化Bean的依赖注入过程。Spring提供了多种自动装配模式,每种模式都有其适用场景。本文将详细介绍Spring框架中的...
这种模式表示Spring容器不进行任何自动装配,所有依赖必须通过显式配置来解决。这是默认的自动装配模式。 4. constructor(构造器注入装配) 这种装配方式是通过Bean的构造函数来完成的。Spring会尝试找到与构造...
自动装配是Spring框架提供的一个功能,它能自动查找并注入bean所依赖的其他bean。这种机制基于类型匹配,Spring容器会尝试寻找与所需类型匹配的bean,然后将其注入到目标bean的相应属性中。 ### 2. Autowired注解的...
默认情况下,Spring不进行任何自动装配。如果一个bean声明了一个依赖,但没有指定如何装配,那么Spring会抛出一个异常,除非你明确告诉它如何处理这个依赖。 2. **byName(按名称自动装配)**: 使用`@Autowired`...
《Spring自动装配详解——基于IDEA 2020的小实例》 在Java开发领域,Spring框架以其强大的功能和灵活性,成为了企业级应用开发的首选。其中,Spring的自动装配特性(Autowired)是其核心特性之一,极大地简化了依赖...
在 Spring 框架中,自动装配是指容器可以自动将 Bean 之间的关系装配起来,不需要手动配置,从而简化了 XML 配置文件的编写。下面将详细介绍 Spring 中的 4 种自动装配方式。 byName 自动装配 byName 自动装配是指...
在Spring中,自动装配是通过bean元素的autowire属性来实现的。autowire属性有五个值:byName、byType、constructor、autodetect和no。 * byName:根据Property的名称自动装配,如果一个Bean的名称和另一个Bean中的...
虽然`autowire`能简化依赖注入,但过度依赖自动装配可能导致代码的可读性和可测试性降低。在某些情况下,如循环依赖、需要控制依赖注入顺序或处理null值时,可能需要手动配置bean。 ### 7. 总结 `autowire`自动...
<bean id="startQuartz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> ``` 在这段配置中,首先定义了要执行的任务对象`quartzJob`,然后...
本篇将重点讲解Spring的@Autowired自动装配机制,包括XML配置版和注解版,并深入到源码层面进行解析。 @Autowired是Spring框架中的一个核心注解,用于实现自动装配bean的需求。当我们想要在类中注入某个依赖时,...
本篇将详细探讨"3Spring使用annotation方式autowire"这一主题,包括注解驱动的自动装配(Autowiring)以及相关的源码分析。 ### 一、注解驱动的自动装配 自动装配是Spring框架的一个核心特性,它允许框架自动管理...
autowire 是 Spring 中的一种自动装配机制,通过在 Bean 的配置文件中使用 autowire 属性,可以将 Bean 之间的依赖关系自动装配起来。autowire 属性可以取三个值:no、byName、byType。 * no:不进行自动装配,这是...
在Spring框架中,自动装配(Auto-Wiring)是一种简化依赖注入(Dependency Injection,简称DI)的方式,它允许Spring容器自动管理Bean之间的依赖关系,而无需显式地在配置文件中指定。Spring提供了多种自动装配模式...
Spring3.2.4+Quartz2.2.0 实例 <!-- 启动触发器的配置开始 --> <bean name="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> ...