下面列出了怎么用org.springframework.boot.context.event.ApplicationStartedEvent的API类实例代码及写法,或者点击链接到github查看源代码。
@EventListener
@Transactional
public void initExtensionLicenses(ApplicationStartedEvent event) {
var detection = new LicenseDetection(Arrays.asList(detectLicenseIds));
var undetected = new int[1];
repositories.findVersionsByLicense(null).forEach(extVersion -> {
var license = repositories.findFile(extVersion, FileResource.LICENSE);
if (license != null) {
var detectedId = detection.detectLicense(license.getContent());
if (detectedId == null) {
undetected[0]++;
} else {
extVersion.setLicense(detectedId);
var extension = extVersion.getExtension();
logger.info("License of " + extension.getNamespace().getName() + "." + extension.getName()
+ " v" + extVersion.getVersion() + " set to " + detectedId);
}
}
});
if (undetected[0] > 0)
logger.warn("Failed to detect license type for " + undetected[0] + " extensions.");
}
@EventListener(ApplicationStartedEvent.class)
public void generateDefaultData() {
Long count = carRepository.count();
if (count == 0L) {
List<String> colors = List.of("Black", "White", "Red", "Blue");
List<Car> carList = new ArrayList<>();
Date newDate = new Date();
for (int i = 0; i < 500; i++) {
carList.add(
Car.builder()
.brand("HKCar")
.colour(colors.get(i % 3))
.date(newDate)
.doorCount(4)
.fuel("Diesel")
.model("SuperCar")
.serial("SR" + i)
.type("TypeC")
.year(2020)
.build()
);
}
carRepository.saveAll(carList);
}
}
private void customizeDataTransform(ApplicationStartedEvent applicationStartedEvent) {
DataTransformCustomizer customizer = null;
try {
customizer = applicationStartedEvent.getApplicationContext().getBean(DataTransformCustomizer.class);
} catch (Exception e) {
}
if (customizer == null)
return;
DataTransform dataTransform = customizer.customize();
if (dataTransform == null)
return;
Repository repository = applicationStartedEvent.getApplicationContext().getBean(Repository.class);
if (repository == null)
return;
((CacheableRepository) repository).setDataTransform(dataTransform);
}
private void customizeL2CacheConsistency(ApplicationStartedEvent applicationStartedEvent) {
L2CacheConsistencyCustomizer customizer = null;
try {
customizer = applicationStartedEvent.getApplicationContext().getBean(L2CacheConsistencyCustomizer.class);
} catch (Exception e) {
}
if (customizer == null || customizer.customize() == null)
return;
L2CacheResolver levelTwoCacheResolver = applicationStartedEvent.getApplicationContext().getBean(L2CacheResolver.class);
if (levelTwoCacheResolver == null)
return;
levelTwoCacheResolver.setL2CacheConsistency(customizer.customize());
}
@Override
public void onApplicationEvent(ApplicationEvent applicationEvent) {
if (applicationEvent instanceof ApplicationStartedEvent) {
Idempotent idempotent = applicationContext.getBean(Idempotent.class);
if (idempotent != null) {
Banner.print();
}
}
}
@EventListener
@Transactional
public void initSearchIndex(ApplicationStartedEvent event) {
if (!isEnabled()) {
return;
}
var stopWatch = new StopWatch();
stopWatch.start();
updateSearchIndex();
stopWatch.stop();
logger.info("Initialized search index in " + stopWatch.getTotalTimeMillis() + " ms");
}
@EventListener
@Transactional
public void initExtensionLicenses(ApplicationStartedEvent event) {
var count = new int[2];
repositories.findAllExtensions().forEach(extension -> {
ExtensionVersion latest = null;
SemanticVersion latestVer = null;
ExtensionVersion preview = null;
SemanticVersion previewVer = null;
for (var extVersion : extension.getVersions()) {
var ver = new SemanticVersion(extVersion.getVersion());
if (extVersion.isPreview() && isGreater(extVersion, ver, preview, previewVer)) {
preview = extVersion;
previewVer = ver;
} else if (!extVersion.isPreview() && isGreater(extVersion, ver, latest, latestVer)) {
latest = extVersion;
latestVer = ver;
}
}
if (latest != null && latest != extension.getLatest()) {
extension.setLatest(latest);
count[0]++;
}
if (preview != null && preview != extension.getPreview()) {
extension.setPreview(preview);
count[1]++;
}
});
if (count[0] > 0)
logger.info("Updated latest version for " + count[0] + " extensions.");
if (count[1] > 0)
logger.info("Updated preview version for " + count[1] + " extensions.");
}
@Override
public void onApplicationEvent(ApplicationStartedEvent event) {
try {
this.loadActiveTheme();
} catch (TemplateModelException e) {
e.printStackTrace();
}
this.loadOptions();
this.loadOwo();
//启动定时任务
// CronUtil.start();
log.info("The scheduled task starts successfully!");
}
@EventListener(ApplicationStartedEvent.class)
public void appStart() {
if (employeeRepository.count().block() == 0) {
IntStream.range(0, 100)
.mapToObj(this::generate)
.map(employeeRepository::save)
.collect(Collectors.toList())
.forEach(item -> item.subscribe(System.out::println));
}
}
@Override
public void onApplicationEvent(ApplicationStartedEvent event) {
try {
this.loadActiveTheme();
} catch (TemplateModelException e) {
e.printStackTrace();
}
this.loadOptions();
this.loadThemes();
this.loadOwo();
//启动定时任务
CronUtil.start();
log.info("The scheduled task starts successfully!");
}
@Override
public void onApplicationEvent(ApplicationStartedEvent event) {
pluginManager.getPlugins(PluginState.STARTED).forEach(pluginWrapper -> {
SpringBootPlugin springBootPlugin = (SpringBootPlugin) pluginWrapper.getPlugin();
ApplicationContext pluginAppCtx = springBootPlugin.getApplicationContext();
pluginAppCtx.publishEvent(new SbpMainAppStartedEvent(applicationContext));
});
pluginManager.setMainApplicationStarted(true);
}
public static void main(String[] args) {
new SpringApplicationBuilder(Object.class)
.listeners((ApplicationListener<ApplicationStartedEvent>) event -> {
System.out.println("监听 Spring Boot 事件 ApplicationStartedEvent");
}, (ApplicationListener<ApplicationStartingEvent>) event -> {
System.out.println("监听 Spring Boot 事件 ApplicationStartingEvent ");
})
.web(false) // 非 Web 应用
.run(args) // 运行 SpringApplication
.close(); // 关闭 Spring 应用上下文
}
/**
* Callback used to run the bean.
* 初始化路由配置的数据,避免gateway 依赖业务模块
*/
@Override
public void onApplicationEvent(ApplicationStartedEvent event) {
log.info("开始初始化路由配置数据");
QueryWrapper<SysRoute> wrapper = new QueryWrapper<>();
wrapper.eq(CommonConstant.DEL_FLAG, CommonConstant.STATUS_NORMAL);
List<SysRoute> routeList = sysRouteService.list(wrapper);
if (!CollectionUtils.isEmpty(routeList)) {
redisRepository.set(CacheConstants.ROUTE_KEY, JsonUtils.toJsonString(routeList));
log.info("更新Redis中路由配置数据:{}条", routeList.size());
}
log.info("初始化路由配置数据完毕");
}
@Override
public void onApplicationEvent(ApplicationStartedEvent event) {
try {
if (codeChecker.needCheck()) {
log.info("[frodez.config.validator.ValidateChecker]hibernate-validator代码校验开始");
check();
log.info("[frodez.config.validator.ValidateChecker]hibernate-validator代码校验结束");
} else {
log.info("[frodez.config.validator.ValidateChecker]未开启hibernate-validator代码校验功能");
}
} catch (IOException | ClassNotFoundException | LinkageError e) {
log.error("[frodez.config.validator.ValidateChecker]发生错误,程序终止", e);
ContextUtil.exit();
}
}
@Override
public void onApplicationEvent(ApplicationStartedEvent event) {
try {
this.loadActiveTheme();
} catch (TemplateModelException e) {
e.printStackTrace();
}
this.loadOptions();
this.loadThemes();
this.loadOwo();
//启动定时任务
CronUtil.start();
log.info("The scheduled task starts successfully!");
}
@Override
public void onApplicationEvent(ApplicationStartedEvent event) {
List<BindingParam> bindingParams = new ArrayList<>();
bindingParams.add(new RestBindingParam());
ServiceParam serviceParam = new ServiceParam();
serviceParam.setInterfaceType(SwaggerService.class);
serviceParam.setInstance(new SwaggerServiceImpl());
serviceParam.setBindingParams(bindingParams);
ServiceClient serviceClient = clientFactory.getClient(ServiceClient.class);
serviceClient.service(serviceParam);
}
@Override
public void onApplicationEvent(ApplicationStartedEvent event) {
try {
this.migrate();
} catch (SQLException e) {
log.error("Failed to migrate database!", e);
}
this.initThemes();
this.initDirectory();
this.printStartInfo();
}
@EventListener
@Order(Ordered.HIGHEST_PRECEDENCE + 1)
public void onApplicationStartedEvent(ApplicationStartedEvent applicationStartedEvent) throws TemplateModelException {
log.debug("Received application started event");
loadThemeConfig();
loadOptionsConfig();
loadUserConfig();
}
/**
* This event is executed as late as conceivably possible to indicate that
* the application is ready to service requests.
*/
@Override
public void onApplicationEvent(final ApplicationStartedEvent applicationStartedEvent) {
//System.out.println("DEBUGGING: Found new Spring Boot App property : " + applicationStartedEvent.getApplicationContext().getEnvironment().getProperty("spring.cloud.stream.bindings.input.group"));
System.out.println("======= ApplicationStartingEvent ===== ");
System.out.println("What is the Event Hubs Consumer Group Name?");
System.out.println("NOTIFICATIONS_EVENT_HUB_CONSUMER_GROUP_NAME=" +
applicationStartedEvent.
getApplicationContext().
getEnvironment().
getProperty("spring.cloud.stream.bindings.input.group"));
}
private void customizeRestTemplate(ApplicationStartedEvent event) {
try {
RestTemplateCustomizer bean = event.getApplicationContext().getBean(RestTemplateCustomizer.class);
if (bean == null)
return;
SimpleRestTemplate simpleRestTemplate = bean.customize();
if (simpleRestTemplate == null)
return;
HttpClientResolver.setRestTemplate(simpleRestTemplate);
}catch (Exception e) {
}
}
private void txConfig(ApplicationStartedEvent event){
try {
PlatformTransactionManager platformTransactionManager = event.getApplicationContext().getBean(PlatformTransactionManager.class);
if (platformTransactionManager == null)
return;
new TxConfig(platformTransactionManager);
}catch (Exception e){
}
}
@SuppressWarnings("unchecked")
@Override
public void onApplicationEvent(ApplicationStartedEvent event) {
try {
Class<? extends Annotation> managedBeanClass = (Class<? extends Annotation>) Class.forName("javax.faces.bean.ManagedBean");
warnAboutJsfManagedBeans(event.getApplicationContext(), managedBeanClass);
}
catch (ClassNotFoundException | LinkageError ignored) {
}
}
@Test
public void testJsfManagedBeans() {
this.applicationContextRunner
.withUserConfiguration(DummyConfiguration.class)
.run(context -> {
assertThat(context.getBeanNamesForAnnotation(ManagedBean.class)).isNotEmpty();
ApplicationStartedEvent applicationStartedEvent = mock(ApplicationStartedEvent.class);
when(applicationStartedEvent.getApplicationContext()).thenReturn(context.getSourceApplicationContext());
this.joinfacesApplicationAnalyzer.onApplicationEvent(applicationStartedEvent);
});
}
@Test
public void issue_notDecryptedDuringBoostrapPhase() {
// making spring.cloud.bootstrap.enabled=true in order to bootstrap the application.
// making jasypt.encryptor.bootstrap=false otherwise JasyptSpringCloudBootstrapConfiguration becomes active.
startWith(new BaseBootstrappingTestListener() {
@Override
public void onApplicationEvent(final ApplicationStartedEvent event) {
assertEquals("ENC() value is not decrypted during bootstrap phase", "mypassword", event.getApplicationContext().getEnvironment().getProperty("spring.cloud.config.server.svn.password"));
}
}, "--spring.cloud.bootstrap.enabled=true", "--jasypt.encryptor.bootstrap=false");
assertNotNull(this.context.getBean(EnableEncryptablePropertiesBeanFactoryPostProcessor.class));
}
@Test
public void fix_decryptedDuringBoostrapPhase() {
// making spring.cloud.bootstrap.enabled=true in order to bootstrap the application.
// making jasypt.encryptor.bootstrap=true in order to bootstrap Jasypt.
startWith(new BaseBootstrappingTestListener() {
@Override
public void onApplicationEvent(final ApplicationStartedEvent event) {
assertEquals("ENC() value is decrypted during bootstrap phase", "mypassword", event.getApplicationContext().getEnvironment().getProperty("spring.cloud.config.server.svn.password"));
}
}, "--spring.cloud.bootstrap.enabled=true", "--jasypt.encryptor.bootstrap=true");
assertNotNull(this.context.getBean(EnableEncryptablePropertiesBeanFactoryPostProcessor.class));
}
@Test
public void encryptableBFPPBeanCreatedWhenBoostrapTrue() {
startWith(new BaseBootstrappingTestListener() {
@Override
public void onApplicationEvent(final ApplicationStartedEvent event) {
assertEquals("ENC() value is decrypted during bootstrap phase", "mypassword", event.getApplicationContext().getEnvironment().getProperty("spring.cloud.config.server.svn.password"));
}
}, "--spring.cloud.bootstrap.enabled=true");
assertNotNull("EnableEncryptablePropertiesBeanFactoryPostProcessor not created when spring.cloud.bootstrap.enabled=true",
this.context.getBean(EnableEncryptablePropertiesBeanFactoryPostProcessor.class));
}
@Test
public void encryptableBFPPBeanCreatedWhenBoostrapFalse() {
startWith(new BaseBootstrappingTestListener() {
@Override
public void onApplicationEvent(final ApplicationStartedEvent event) {
assertNotEquals("ENC() value is decrypted during bootstrap phase", "mypassword", event.getApplicationContext().getEnvironment().getProperty("spring.cloud.config.server.svn.password"));
}
}, "--spring.cloud.bootstrap.enabled=false");
assertNotNull("EnableEncryptablePropertiesBeanFactoryPostProcessor not created when spring.cloud.bootstrap.enabled=false",
this.context.getBean(EnableEncryptablePropertiesBeanFactoryPostProcessor.class));
}
@Override
public void onApplicationEvent(ApplicationStartedEvent event) {
SpringApplication app = event.getSpringApplication();
app.setBannerMode(Mode.OFF);
logger.info("1 spring boot启动, StartedEventApplicationListener...");
}
@Override
public void onApplicationEvent(ApplicationStartedEvent applicationStartedEvent) {
appHandlerMap.put("client_bind",applicationContext.getBean(BindHandler.class));
appHandlerMap.put("client_closed",applicationContext.getBean(SessionClosedHandler.class));
applicationContext.getBean(CIMNioSocketAcceptor.class).bind();
}
@Override
public void onApplicationEvent(@NonNull ApplicationStartedEvent event) {
taskScheduler.scheduleWithFixedDelay(delegatingDelayJobHandler, props.getDelayBucketPollRate());
}