@Component
@Slf4j
public class MembershipExpirationTask implements ApplicationContextAware {

    private static ApplicationContext context;

    @Override
    public void setApplicationContext(@NotNull ApplicationContext applicationContext) throws BeansException {
        context = applicationContext;
    }

    public static <T> T getBean(Class<T> clazz) {
        return context != null ? context.getBean(clazz) : null;
    }

        

     //此处相当于
     @Resoure
     private TicketingMemberService ticketingMemberService;
     TicketingMemberService ticketingMemberService  =MembershipExpirationTask.getBean(TicketingMemberService.class);
}

之所以报这个错,是因为@Scheduled 注解方式级别高于资源注入(@Resource,@Autowired)级别,导致资源注入失败.

所以需要去写一个Bean去实现ApplicationContextAware接口,然后重写setApplicationContextAware方法

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐