当我们执行完指定业务时需要调定时任务刷新数据,这时定时任务在本工程代码中是有的,重写定时任务逻辑太麻烦,因此直接从spring容器中获取xxl注册的bean然后拿到我们需要的定时任务bean执行execute方法

 

WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();

        if (wac == null)

        {

            return;

        }

        // 从spring中拿到JobHandler注解的bean map

        Map<String, Object> serviceBeanMap = wac.getBeansWithAnnotation(JobHandler.class);

        if (serviceBeanMap != null && serviceBeanMap.size() > 0)

        {

            for (Object serviceBean : serviceBeanMap.values())

            {

                // 判断是否IJobHandler

                if (serviceBean instanceof IJobHandler)

                {

                    String name = serviceBean.getClass().getAnnotation(JobHandler.class).value();

                    if ("itemBalanceJobHandler".equals(name))

                    {

                        try

                        {

                            ((IJobHandler) serviceBean).execute(null);

                        }

                        catch (Exception e)

                        {

                            logger.error("刷新子账号余额异常" + e);

                        }

                    }

                }

            }

        }

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐