![JAR search and dependency download from the Maven repository](/logo.png)
club.zhcs.lina.starter.event.SpringEventAutoConfiguration Maven / Gradle / Ivy
package club.zhcs.lina.starter.event;
import java.util.concurrent.ThreadPoolExecutor;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.event.SimpleApplicationEventMulticaster;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.core.task.TaskExecutor;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
/**
*
* @author kerbores([email protected])
*
*/
@EnableAsync
@AutoConfiguration
@EnableConfigurationProperties(SpringEventAutoConfigurationProperties.class)
@ConditionalOnExpression("${lina.event.async:true}")
public class SpringEventAutoConfiguration {
@Bean(AbstractApplicationContext.APPLICATION_EVENT_MULTICASTER_BEAN_NAME)
@ConditionalOnMissingBean
SimpleApplicationEventMulticaster myEventMulticaster(TaskExecutor taskExecutor) {
SimpleApplicationEventMulticaster simpleApplicationEventMulticaster = new SimpleApplicationEventMulticaster();
simpleApplicationEventMulticaster.setTaskExecutor(taskExecutor);
return simpleApplicationEventMulticaster;
}
@Bean
@ConditionalOnMissingBean
TaskExecutor taskExecutor(SpringEventAutoConfigurationProperties config) {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(config.getCorePoolSize());
executor.setMaxPoolSize(config.getMaxPoolSize());
executor.setQueueCapacity(config.getQueueCapacity());
executor.setKeepAliveSeconds(config.getKeepAliveSeconds());
executor.setThreadNamePrefix("thread-");
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.DiscardPolicy());
executor.setWaitForTasksToCompleteOnShutdown(true);
executor.initialize();
return executor;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy