NutzCN Logo
问答 quart的job如何取到ioc
发布于 2443天前 作者 老司机 2884 次浏览 复制 上一个帖子 下一个帖子
标签: quartz

其实想在job里面去properties里面的配置的,结果连ioc都取不到,因为是不同线程所以取不到,那我想哪怎么办???

package com.ccb.znyw_batch.quartz.job;

import org.nutz.ioc.impl.PropertiesProxy;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Files;
import org.nutz.mvc.Mvcs;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

import java.io.File;

@IocBean
public class SubmitJob implements Job {


    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        try {
            PropertiesProxy conf = Mvcs.getIoc().get(PropertiesProxy.class, "conf");
            String path = conf.get("scan.folder");
            System.out.println(path);
            File folder = new File(path);
            File[] data = Files.files(folder, "dat");
            for (File file : data) {
                System.out.println(Files.read(file));
            }
            System.out.println("执行任务");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

7 回复

用quartz插件也没这个烦恼

@wendal 有啊,我就是quart插件里面的job不知道怎么哪properties的值

@wendal 我看了非Mvc环境下获取ioc的方法,能不能再简洁点,哪怕不要ioc我只要properties里面的值

仔细看文档,就2行代码,MainSetup用个变量存一下,其他地方随便取

MainSetUp里的代码如下,可实现了job的类里怎么取呢?

public static Ioc ioc=null;
@Override
	public void init(NutConfig nutConfig) { 
		try {
			MainSetup.ioc=nutConfig.getIoc();
			ClassLoader loader = this.getClass().getClassLoader();
			String loghome = URLDecoder.decode(loader.getResource("../logs").getPath(), "utf-8");
			System.setProperty("logHome", loghome);
			InitJob();
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
	}

MainSetup.ioc是public的static的,你自己想想吧

添加回复
请先登陆
回到顶部