Планирование работы в весенней загрузке
У меня есть 3 разных модуля в моем проекте, а именно core-services
services
sync-engine
, Каждый модуль имеет свой Application.java
с public static void main(String[] args)
, У меня есть планировщик в sync-engine
модуль, который вызывает Google API в указанное время. Scheduler
класс в sync-engine
имеет зависимость от core-service
модуль. Итак, я автоматически связал зависимость и использовал ее. Автосвязанная зависимость вызывает репозиторий в core-service
модуль, но я получаю пустой набор результатов. Но если я переместить планировщик в core-service
модуль, я получаю желаемые результаты. Как получить желаемый результат, не перемещая планировщик в другой модуль. Я очень новичок в весне, пожалуйста, помогите
Следующее sync-engine
модуль конфигурации
package com.xxx.abc;
@SpringBootApplication( exclude = { EmbeddedDataSource.class } )
@EnableJpaRepositories
@EnableEncryptableProperties
@PropertySource( name = "encrypedProps", value ="classpath:secret.properties" )
@Import( { HikariDataSourceConfig.class } )
@EnableJms
@EnableScheduling
@EnableSpringDataWebSupport
@EnableAsync
public class KatSyncEngineApplication {
private static final Logger LOG = LoggerFactory.getLogger(KatSyncEngineApplication.class);
/**
*
* @param args
*/
public static void main( final String[] args )
{
LOG.debug("Booting Spring Application ...... ");
SpringApplication.run(KatSyncEngineApplication.class, args);
}
/**
*
* @return
*/
@Bean
public LocaleResolver localeResolver()
{
final SessionLocaleResolver sessionLocaleResolver = new SessionLocaleResolver();
sessionLocaleResolver.setDefaultLocale(Locale.US);
return sessionLocaleResolver;
}
/**
*
* @return
*/
@Bean
public ReloadableResourceBundleMessageSource messageSource()
{
final ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasenames("classpath:bundles/messages", "classpath:bundles/errors",
"classpath:bundles/tooltip");
messageSource.setCacheSeconds(3600 * 24); // every day
messageSource.setAlwaysUseMessageFormat(true);
return messageSource;
}
/**
*
* @return
*/
@Bean
public MultipartConfigElement multipartConfigElement()
{
final MultipartConfigFactory factory = new MultipartConfigFactory();
factory.setMaxFileSize("50Mb");
factory.setMaxRequestSize("50Mb");
return factory.createMultipartConfig();
}
}
Планировщик в sync-engine
модуль
package com.xxx.abc.scheduler;
import java.util.ArrayList;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import com.xxx.abc.app.auth.UserAccessDetailsToken;
import com.xxx.abc.beans.GoogleUserTokenBean;
import com.xxx.abc.data.katgooglecalendar.domain.AggregateKatGoogleCalendar;
import com.xxx.abc.katgooglecalendar.service.KatGoogleCalendarService;
import com.xxx.abc.exception.DataException;
import com.xxx.abc.cmutils.NullEmptyUtils;
@Component
public class CalendarSchedular {
private static final Logger logger = LoggerFactory.getLogger(CalendarSchedular.class);
/**
*
*/
private static final int FIXED_RATE = 1200000;
@Autowired
private KatGoogleCalendarService katGoogleCalendarService;
@Scheduled( fixedRate = FIXED_RATE )
public void getCalendarData() throws DataException
{
try
{
int pageNumber = 0;
final int pageSize = 30;
new PageRequest(pageNumber, pageSize);
List<AggregateKatGoogleCalendar> googleCalendars = new ArrayList<AggregateKatGoogleCalendar>();
do
{
System.out.println(getString());
googleCalendars =katGoogleCalendarService.getAllUsersCalendarDetails();
System.out.println("result set: " + googleCalendars.size());
if( !NullEmptyUtils.isNullorEmpty(googleCalendars) )
{
for( final AggregateKatGoogleCalendar aggregateKatGoogleCalendar : googleCalendars )
{
//Business logic
}
++pageNumber;
new PageRequest(pageNumber, pageSize);
}
} while( !NullEmptyUtils.isNullorEmpty(googleCalendars) && googleCalendars.size() >= pageSize );
}
catch( final DataException e )
{
logger.error("Error", e);
}
catch( final Exception e )
{
logger.error("Error", e);
}
}
}
В @Autowired
private KatGoogleCalendarService katGoogleCalendarService;KatGoogleCalendarService
в core-service
модуль
getAllUsersCalendarDetails()
Метод вызывает хранилище. Но я получаю пустой набор результатов. Но если я добавлю тот же класс планировщика в core-service
модуль, я получу желаемый результат.