一.注解方式
@Bean注解: 使用在方法上,方法返回值会被注入到spring容器中,多用于第三方jar注入spring容器,bean的名称为方法名称。代码示例:
@Configuration
public class ThreadPoolConfig {
@Bean
public ThreadPoolTaskExecutor pipelineThreadPool() {
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
taskExecutor.setCorePoolSize(4);
taskExecutor.setMaxPoolSize(8);
taskExecutor.setKeepAliveSeconds(960);
taskExecutor.setQueueCapacity(256);
taskExecutor.setThreadNamePrefix("pipelineThreadPool");
taskExecutor.setRejectedExecutionHandler(rejectedExecutionHandler());
return taskExecutor;
}
@Bean
public CallerRunsPolicy rejectedExecutionHandler() {
return new CallerRunsPolicy();
}
}
@Import 注解 : 可以通过此注解将第三方jar中的类注入到spring容器中,但是需要注意的是通过此注解导入的类的bean的名称为全限定类名,而通过@bean注解导入的bean的名称为方法名称。示例代码:
@Import(value = ThreadPoolTaskExecutor.class)
@Configuration
public class ThreadPoolConfig {
/**
* 当 @Import 注解导入ThreadPoolTaskExecutor 时, bean的名称为org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
* @Import 注解也是用来导入第三方jar包的。
* @return
*/
//@Bean
//@Conditional(value = EvnConditinal.class)
public ThreadPoolTaskExecutor pipelineThreadPool() {
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
taskExecutor.setCorePoolSize(4);
taskExecutor.setMaxPoolSize(8);
taskExecutor.setKeepAliveSeconds(960);
taskExecutor.setQueueCapacity(256);
taskExecutor.setThreadNamePrefix("pipelineThreadPool");
taskExecutor.setRejectedExecutionHandler(rejectedExecutionHandler());
return taskExecutor;
}
@Bean
public CallerRunsPolicy reject