类org.springframework.scheduling.annotation.AsyncConfigurer源码实例Demo

下面列出了怎么用org.springframework.scheduling.annotation.AsyncConfigurer的API类实例代码及写法,或者点击链接到github查看源代码。

@Bean
public AsyncConfigurer asyncConfigurer() {
    AsyncUncaughtExceptionHandler handler = new SimpleAsyncUncaughtExceptionHandler();

    return new AsyncConfigurer() {
        @Override
        @SneakyThrows
        public Executor getAsyncExecutor() {
            return threadPoolTaskExecutor().getObject();
        }

        @Override
        public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
            return handler;
        }
    };
}
 
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
  if (bean instanceof AsyncConfigurer && !(bean instanceof TracedAsyncConfigurer)) {
    AsyncConfigurer configurer = (AsyncConfigurer) bean;
    Tracer tracer = this.beanFactory.getBean(Tracer.class);
    return new TracedAsyncConfigurer(tracer, configurer);
  }
  return bean;
}
 
@Test
public void should_return_async_configurer_when_bean_instance_of_it() {
  BeanFactory beanFactory = mock(BeanFactory.class);
  when(beanFactory.getBean(Tracer.class)).thenReturn(new MockTracer());

  CustomAsyncConfigurerAutoConfiguration configuration = new CustomAsyncConfigurerAutoConfiguration();
  configuration.setBeanFactory(beanFactory);

  Object bean = configuration
      .postProcessAfterInitialization(mock(AsyncConfigurer.class), "myAsync");
  then(bean).isInstanceOf(TracedAsyncConfigurer.class);
}
 
@Override
public Object postProcessAfterInitialization(Object bean, String beanName)
		throws BeansException {
	if (bean instanceof AsyncConfigurer
			&& !(bean instanceof LazyTraceAsyncCustomizer)) {
		AsyncConfigurer configurer = (AsyncConfigurer) bean;
		return new LazyTraceAsyncCustomizer(this.beanFactory, configurer);
	}
	return bean;
}
 
@Test
public void should_return_lazy_async_configurer_when_bean_is_async_configurer()
		throws Exception {
	AsyncCustomAutoConfiguration configuration = new AsyncCustomAutoConfiguration();

	Object bean = configuration
			.postProcessAfterInitialization(mock(AsyncConfigurer.class), "someName");

	then(bean).isInstanceOf(LazyTraceAsyncCustomizer.class);
}
 
源代码6 项目: spring-cloud-sleuth   文件: GH1212Tests.java
@Bean
public AsyncConfigurer customAsyncConfigurer() {
	return new AsyncConfigurerSupport() {
		@Override
		public Executor getAsyncExecutor() {
			return new SimpleAsyncTaskExecutor("customAsyncConfigurer");
		}
	};
}
 
源代码7 项目: java-spring-cloud   文件: TracedAsyncConfigurer.java
public TracedAsyncConfigurer(Tracer tracer, AsyncConfigurer delegate) {
  this.tracer = tracer;
  this.delegate = delegate;
}
 
public LazyTraceAsyncCustomizer(BeanFactory beanFactory, AsyncConfigurer delegate) {
	this.beanFactory = beanFactory;
	this.delegate = delegate;
}