1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/52itstyle-spring-boot-task

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

spring-boot-task

На основе Spring Boot 2.x и Quartz разработана система управления CRUD-задачами, которая подходит для небольших и средних проектов.

Среда разработки JDK1.8, Maven, Eclipse.

Технологический стек SpringBoot 2.1.6, Thymeleaf 3.0.9, Quartz 2.3.0, iView, Vue, Layer, AdminLTE, Bootstrap.

Запуск системы

  • Проект использует базу данных MySQL. Выберите файл tables_mysql_innodb.sql в папке resources/sql для инициализации базы данных.
  • Замените данные источника в файлах application.properties и quartz.properties на собственные.
  • Для запуска проекта выполните метод main в классе Application. Проект автоматически создаст тестовую задачу (см. com.itstyle.quartz.config.TaskRunner.java).
  • Доступ к проекту: http://localhost:8080/quartz.

Различия версий (Spring Boot 1.x и 2.x)

Здесь сравниваются только эти два проекта, хотя при обновлении до Spring Boot 2.x есть ещё много моментов, которые нужно учитывать.

Конфигурация имени проекта:

# Spring Boot 1.x
server.context-path=/quartz
# Spring Boot 2.x
server.servlet.context-path=/quartz

Конфигурация Thymeleaf:

#Spring Boot 1.x
spring.thymeleaf.mode=LEGACYHTML5
#Spring Boot 2.x
spring.thymeleaf.mode=HTML

Hibernate конфигурация:

# Spring boot 2.x JPA зависимость Hibernate 5
# Hibernate 4 naming strategy fully qualified name. Не поддерживается с Hibernate 5.
spring.jpa.hibernate.naming.strategy = org.hibernate.cfg.ImprovedNamingStrategy
# stripped before adding them to the entity manager)
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
# Hibernate 5
spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

Quartz конфигурация:

# Spring Boot 2.x уже интегрирован с Quartz, не требует отдельной конфигурации
spring.quartz.job-store-type=jdbc
spring.quartz.properties.org.quartz.scheduler.instanceName=clusteredScheduler
spring.quartz.properties.org.quartz.scheduler.instanceId=AUTO
spring.quartz.properties.org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
spring.quartz.properties.org.quartz.jobStore.tablePrefix=QRTZ_
spring.quartz.properties.org.quartz.jobStore.isClustered=true
spring.quartz.properties.org.quartz.jobStore.clusterCheckinInterval=10000
spring.quartz.properties.org.quartz.jobStore.useProperties=false
spring.quartz.properties.org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
spring.quartz.properties.org.quartz.threadPool.threadCount=10
spring.quartz.properties.org.quartz.threadPool.threadPriority=5
spring.quartz.properties.org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread=true

Настройка домашней страницы:

/**
 * Конфигурация домашней страницы Spring Boot 1.x
 * Создатель: 小柒2012
 * Дата создания: 2017-09-07
 */
@Configuration
public class MyAdapter extends WebMvcConfigurerAdapter{
    @Override
    public void addViewControllers( ViewControllerRegistry registry ) {
        registry.addViewController( "/" ).setViewName( "forward:/login.shtml" );
        registry.setOrder( Ordered.HIGHEST_PRECEDENCE );
        super.addViewControllers( registry );
    } 
}
/**
 * Настройка домашней страницы (в SpringBoot2.0 и Spring 5.0 WebMvcConfigurerAdapter устарели, рекомендуется реализовать интерфейс WebMvcConfigurer)
 * Создатель: 小柒2012
 * Дата создания:  2018-04-10
 */
@Configuration
public class MyAdapter implements WebMvcConfigurer{
    @Override
    public void addViewControllers( ViewControllerRegistry registry ) {
        registry.addViewController( "/" ).setViewName( "forward:/login.shtml" );
        registry.setOrder( Ordered.HIGHEST_PRECEDENCE );
    } 
}

Скриншоты проекта

1

2

3

4

5

6

7 Настройка интервала проверки кластера 20 секунд

spring.quartz.properties.org.quartz.jobStore.clusterCheckinInterval = 2000

После запуска двух проектов на разных портах (8081 и 8082) локально, обнаруживается, что только один из них работает. После завершения работы этого проекта, другой проект обнаруживает, что задача в кластере не выполнена и берёт её на себя.

2018-04-12 09:00:01.792 INFO 7488 --- [_ClusterManager] o.s.s.quartz.LocalDataSourceJobStore : ClusterManager: обнаружено 1 неудачных или перезапущенных экземпляров. 2018-04-12 09:00:01.793 INFO 7488 --- [_ClusterManager] o.s.s.quartz.LocalDataSourceJobStore : ClusterManager: сканирование неудачных текущих заданий экземпляра «itstyle-PC1523496348539». 2018-04-12 09:00:01.839 INFO 7488 --- [_ClusterManager] o.s.s.quartz.LocalDataSourceJobStore : ClusterManager: ... освобождено 1 полученное триггер(а).

Расширение

Основные интерфейсы Quartz API включают:

  • Scheduler – основной API для взаимодействия с scheduler;
  • Job – интерфейс, который должен быть реализован вашим классом задач для выполнения через scheduler;
  • JobDetail – определение экземпляра Job;
  • Trigger – запуск выполнения Job;
  • JobBuilder – интерфейс для определения и создания экземпляра JobDetail;
  • TriggerBuilder – интерфейс для определения и создания экземпляра Trigger.

Автор: 小柒2012

Добро пожаловать подписаться: https://blog.52itstyle.vip

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Система управления CRUD-задачами на основе Spring-Boot 2.x и Quartz. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/52itstyle-spring-boot-task.git
git@api.gitlife.ru:oschina-mirror/52itstyle-spring-boot-task.git
oschina-mirror
52itstyle-spring-boot-task
52itstyle-spring-boot-task
master