Spring注入常量,@Value获取配置文件参数为空情况,解决办法

1.普通获取配置文件参数为空情况

  • 这种情况大概率是该类未注册到spring上下文中,导致通过@Value获取不到参数信息,如果是工具类可以考虑在类上添加@Component或者@Service的方式将类注册到spring中,这样再次通过@value就可以获取到配置文件中的参数了
	//@Service
@Component
public class FileMonitorTest {
    
}

2.继承监听器中获取配置文件参数为空情况

  • 继承监听器中获取配置文件中的参数使用@value是不起作用的,可以考虑使用构造器的方式,将参数传递过来,这样就解决继承监听器中不能使用配置文件中参数的问题了

1.自定义的类,调用继承监听器时将参数传递到继承监听器类中

	//@Service
@Component
public class FileMonitorTest {

    @Value("${listen.savePath}")
    public String savePath;
    @Value("${listen.targetPath}")
    private String targetPath;
    /**
     * @throws Exception
     */
    public void startWork() throws Exception {
        // 监控目录
//        String rootDir = "D:\\2021\\";
        // 轮询间隔 5 秒
        long interval = TimeUnit.SECONDS.toMillis(5);
        //
        FileAlterationObserver observer = new FileAlterationObserver(
                targetPath,
                FileFilterUtils.and(
                        FileFilterUtils.fileFileFilter(),                FileFilterUtils.suffixFileFilter(".txt")).or(FileFilterUtils.directoryFileFilter()),null);
        observer.addListener(new MyFileListener(savePath));
        FileAlterationMonitor monitor = new FileAlterationMonitor(interval,observer);
        // 开始监控
        System.out.println("开启文件监控");
        monitor.start();
    }
}

2.继承监听器类中通过构造器拿到上面传递的参数就可以了

public class MyFileListener extends FileAlterationListenerAdaptor {
    private String savePath;

    public MyFileListener(String savePath) {
        super();
        this.savePath = savePath;
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值