Вы не можете автоматически связать enum
, так как перечисления являются константами, созданными средой выполнения Java, и не могут как таковые быть компонентами, управляемыми Spring.
Вам необходимо передать любые требуемые значения в качестве параметров дляметод.
public enum TaskType {
CREATE_MATERIAL{
@Override
public void handleTask(AService service, ScheduledEvent scheduledEvent) {
service.createMaterial(scheduledEvent);
}
};
public abstract void handleTask(AService service, ScheduledEvent scheduledEvent);
}
Если для разных стратегий необходимо вызывать разные службы, прекратите использование enum
.
public interface TaskType {
public abstract void handleTask(AService service, ScheduledEvent scheduledEvent);
}
@Component
public class CreateMaterial implements TaskType {
@Autowired
private static AService service;
@Override
public void handleTask(ScheduledEvent scheduledEvent) {
service.createMaterial(scheduledEvent);
}
};