У меня работает стандартное приложение Spring Boot.У меня есть ситуации, когда я хочу запустить «задание», которое в основном представляет собой какой-то определенный метод, обычно запускаемый через пользователя, который делает что-то в своем браузере, но я хочу запустить его из командной строки.
Я могу запуститьпроизвольный класс с gradlew;
./gradlew -PmainClass=kcentral.backingservices.URLMetaExtractor execute
Однако при запуске таким способом ни один из «автопроводов» не работает.Что может быть лучше для выполнения произвольного класса (который имеет основной метод), так что он также работает с любой Autowiring?
РЕДАКТИРОВАТЬ:
Я получил несколько советов, чтобы использовать CommandLineRunner и некоторыеargs, которые работают для выполнения команды с помощью:
./gradlew bootRun -Pargs=--reloadTestData
Однако автопроводка моего репо не работает.У меня есть следующее:
@EnableAutoConfiguration
@EnableMongoAuditing
@EnableMongoRepositories(basePackageClasses=KCItemRepo.class)
@ComponentScan(basePackages = {"kcentral"})
public class ReloadTestData implements CommandLineRunner {
@Autowired
AddItemService addItemService;
@Autowired
KCItemRepo itemRepo;
@Autowired
KCItemRatingRepo itemRatingRepo;
private static final Logger log = LoggerFactory.getLogger(ReloadTestData.class);
public void reloadData(){
log.info("reloadData and called");
if (itemRepo == null){
log.error("Repo not found");
return;
}
long c = itemRepo.count();
log.warn("REMOVING ALL items "+c);
itemRepo.deleteAll();
log.warn("REMOVING ALL ratings");
itemRatingRepo.deleteAll();
}
itemRepo всегда имеет значение null, даже если я подключаюсь так же в моем «обычном» приложении с весенней загрузкой без проблем.Что мне нужно сделать, чтобы правильно подключить его?