有个功能需要定时任务,由于我们的项目应用的是spring3.0,基本都基于注解来完成注入功能,所以查了一下资料,大多都是
http://zywang.iteye.com/blog/949123
和这个一样的示例,但是我按这个照着个配置做确不能运行,后来找到原因,看配置吧!
注:如果spring配置文件中指定bean的加载方式为lazy(default-lazy-init="true"),设置了定时任务的类在初始化时没有被调用,所以不能执行定时任务,这时可以把定时任务类初始化为(lazy-init ="false")
【<bean id = "task" lazy-init ="false" class = "TaskTest"></bean>】
配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/fex
http://www.springframework.org/schema/fex/spring-fex-1.5.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!--加入此段配置,-->
<context:component-scan base-package="com.sun.task" />
<!-- Enables the Spring Task @Scheduled programming model -->
<task:executor id="executor" pool-size="1" />
<task:scheduler id="scheduler" pool-size="1" />
<task:annotation-driven executor="executor" scheduler="scheduler" />
</beans>
程序代码:
import java.sql.SQLException;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class TaskTest {
@Scheduled(fixedDelay = 1000)
void doSomethingWithDelay() throws SQLException{
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("I'm doing with delay now!");
}
}
付了代码
http://zywang.iteye.com/blog/949123
和这个一样的示例,但是我按这个照着个配置做确不能运行,后来找到原因,看配置吧!
注:如果spring配置文件中指定bean的加载方式为lazy(default-lazy-init="true"),设置了定时任务的类在初始化时没有被调用,所以不能执行定时任务,这时可以把定时任务类初始化为(lazy-init ="false")
【<bean id = "task" lazy-init ="false" class = "TaskTest"></bean>】
配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/fex
http://www.springframework.org/schema/fex/spring-fex-1.5.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!--加入此段配置,-->
<context:component-scan base-package="com.sun.task" />
<!-- Enables the Spring Task @Scheduled programming model -->
<task:executor id="executor" pool-size="1" />
<task:scheduler id="scheduler" pool-size="1" />
<task:annotation-driven executor="executor" scheduler="scheduler" />
</beans>
程序代码:
import java.sql.SQLException;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class TaskTest {
@Scheduled(fixedDelay = 1000)
void doSomethingWithDelay() throws SQLException{
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("I'm doing with delay now!");
}
}
付了代码