首页 > 解决方案 > Spring JPA 多线程

问题描述

我与 MySQL 数据库连接,试图在findBy函数中使用 JPA 获取数据,但我坚持使用Async函数,我只是试图设置 10 个执行器,我用所有配置设置任务执行器,但它不起作用。

班级TestRepository

public interface TestRepository extends CrudRepository<Test, Long> {

    List<Test> findByLastName(String lastName);

    Test findById(long id);
}

班级AsyncConfiguration

@Configuration
@EnableAsync
public class AsyncConfiguration {
    private static final Logger LOGGER = LoggerFactory.getLogger(AsyncConfiguration.class);
    @Bean (name = "taskExecutor")
    public Executor taskExecutor() {
        LOGGER.debug("Creating Async Task Executor");
        final ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.setCorePoolSize(2);
        executor.setMaxPoolSize(2);
        executor.setQueueCapacity(1000);
        executor.setThreadNamePrefix("CarThread-");
        executor.initialize();
        return executor;
    }
}

班级AccessingDataJpaApplication

@SpringBootApplication
public class AccessingDataJpaApplication {

    private static final Logger log = LoggerFactory.getLogger(AccessingDataJpaApplication.class);

    public static void main(String[] args) {
        SpringApplication.run(AccessingDataJpaApplication.class);
    }

    @Bean
    @Async
    public CommandLineRunner demo(TestRepository repository) {
        return (args) -> {

            log.info("--------------------------------------------");
            repository.findByLastName("FL").forEach(on -> {
                log.info(on.toString());
            });
        };

        }
}

标签: springmultithreadinghibernatespring-bootspring-data-jpa

解决方案


推荐阅读