Spring定时器执行一个方法,方法内调用Dao接口的实现类,Dao通过Spring框架注入,但是执行后输出值
这个是定时器执行的类:
private searchDataDao dao;
private List<searchData> list;
public void InsertData(){
System.out.println("定时程序进入");
System.out.println(dao);
list=dao.findAll();
System.out.println("查询后数据"+list.size());
Dao接口:
public interface searchDataDao {
List<searchData> findAll();
}
Dao接口的实现类:
public List<searchData> findAll() {
String hql="from searchData ";
Session session=getSessionFactory().openSession();
Query query=session.createQuery(hql);
System.out.println("查询数据库");
List<searchData> list= query.list();
System.out.println("查询的数据是"+list.get(0));
session.close();
return list;
Spring配置文件:
<bean id="QuartzJob" class="com.gtjc.quartz.QuartzJob" scope="prototype">
<property name="dao" ref="searchDataDao"></property>
</bean>
<bean id="searchDataDao" class="com.gtjc.quartz.dao.impl.searchDataDaoImpl"
scope="singleton">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
定时器配置文件:
<!-- 配置作业类 -->
<bean id="job2"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<bean class="com.gtjc.quartz.QuartzJob" />
</property>
<property name="targetMethod" value="InsertData" />
<property name="concurrent" value="false" /> <!-- 作业不并发调度 -->
</bean>
<!-- 配置作业调度的触发方式(触发器) -->
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail" ref="job2" />
<property name="startDelay" value="5000" /><!-- 调度工厂实例化后,经过0秒开始执行调度 -->
<property name="repeatInterval" value="10000" /><!-- 每2秒调度一次 -->
</bean>
<!-- 配置调度工厂 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="simpleTrigger" />
</list>
</property>
</bean>