一、创建线程池
在Spring Boot中,可以通过在@Configuration类中定义一个@Bean方法来创建线程池。以下是一个示例:
@Configuration
public class AppConfig {
@Bean
public Executor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(10);
executor.setMaxPoolSize(100);
executor.setQueueCapacity(10);
executor.setThreadNamePrefix("MyAsyncThread-");
executor.initialize();
return executor;
}
}
在上面的示例中,taskExecutor()方法返回一个ThreadPoolTaskExecutor
对象,该对象配置了线程池的核心大小、最大大小、队列容量和线程名称前缀。initialize()
方法用于初始化线程池。
可以在其他类中通过@Autowired
注解进行注入使用。
二、@Bean说明
@Bean
注解在Spring中用于定义Bean对象,它通常与@Configuration
注解一起使用,用于声明一个类为配置类,其中包含了多个@Bean
注解的方法,每个方法都会返回一个Bean对象。这些Bean对象会被Spring容器管理,可以在其他类中通过@Autowired
注解进行注入使用。
@Bean
注解默认情况下创建的Bean对象是单例的,也就是说在整个应用程序中只会创建一个实例。如果需要创建多个实例,可以在方法上添加@Scope
注解,指定作用域为prototype
。
例如:
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyServiceImpl();
}
@Bean
@Scope("prototype")
public MyDao myDao() {
return new MyDaoImpl();
}
}
上面的代码中,myService()方法返回的Bean对象是单例的,而myDao()方法返回的Bean对象是多例的。
关于@Bean如有其他疑问, 可查看我的另一篇博客spring @Bean的6个疑问
网友评论