Spring Boot cronjob с использованием программы классаJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Spring Boot cronjob с использованием программы класса

Сообщение Anonymous »

Теперь клиент хочет, чтобы я запустил задание cron без использования функции cronjob весенней загрузки по умолчанию, поэтому я не могу использовать @EnableScheduling.
Внутри этого проекта я использую Spring Boot в качестве бэкэнда, и он будет скомпилирован как файл web-application.war.
У меня есть класс CronJobHandler, реализовавший CommandLineRunner

Код: Выделить всё

package company.project.cronjobs;

public class CronJobHandler implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(CronJobHandler.class, args);
}
}
и внутри моего crontab он запустит задание cron с использованием сценария оболочки

Код: Выделить всё

* * * * * /opt/tmp/cronjob.sh
внутри /opt/tmp/cronjob.sh
он ​​должен использовать команду Java для запуска этого конкретного класса командной строки ( это CronJobHandler .
Поскольку я собираюсь повторно использовать некоторые функции в CronJobHandler , например, я определил некоторые функции в классе интерфейса UserService, и конкретная логика определена внутри Класс UserServiceImpl @Service, в котором реализован интерфейс UserService

Код: Выделить всё

import company.project.servic.UserService;
import company.project.entity.User;

@Autowired
private UserService userService;

@Override
public void run(String... args) {
System.out.println("start running cronjob handler");

//getting user using service class from spring boot feature
User user = userService.getUser(1);
}
Каково решение этого подхода? Спасибо!!
Я попробовал скомпилировать проект следующим образом:

Код: Выделить всё

mvn clean package
тогда мой сценарий оболочки будет выглядеть так:

Код: Выделить всё

# Construct the classpath
JAVA_CLASSPATH="../target/web-application.war:../target/web-application/WEB-INF/classes:../target/web-application/WEB-INF/lib/*"
MAIN_CLASS="comany.project.cronjobs.CronJobHandler"

# Run the compiled class
java -classpath "$JAVA_CLASSPATH" "$MAIN_CLASS"
но, похоже, некоторые функции весенней загрузки не применялись к процессу, когда я запускаю команду Java
поскольку некоторые сообщения об ошибках, подобные показанному ниже, показаны на моем терминал:

Код: Выделить всё

Description:

Field userService in company.project.cronjobs.CronJobHandler required a bean of type 'company.project.services.UserService' that could not be found.

The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)

Action:

Consider defining a bean of type 'company.project.services.UserService' in your configuration.
когда я развертываю эту войну в своей службе wildfly, все в порядке, поэтому я думаю, что проблема существует в том, как запустить команду Java. Спасибо!!

Подробнее здесь: https://stackoverflow.com/questions/792 ... ss-program
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»