Spring框架有一个接口AsyncConfigurer(和AsyncConfigurerSupport),用于配置拥有线程池执行程序所需的所有内容,并能够异步运行方法(使用@Async)。
但通常,在不同的功能之间共享相同的线程池并不是一个好习惯,所以通常我用一个名称来限定它们,并且我在Async注释中指定该名称以使用一个特定的线程池。
事情是,我想通过这个方便的接口AsyncConfigurer配置它们而不是失去资格,但是我无法做到。
试试这个:
@Configuration
@EnableAsync
public class PusherAsyncConfigurerSupport extends AsyncConfigurerSupport {
@Autowired
ExecutorConfig config;
@Override
@Qualifier(value = "executorOne")
public Executor getAsyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(config.getCorePoolSize());
...
executor.initialize();
return executor;
}
@Override
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
return new MyAsyncUncaughtExceptionHandler();
}
}
当放入Async注释时,仍然无法识别该线程池。
那么,以这种方式配置多个线程池需要什么?或者根本不是这样的方式?
答案 0 :(得分:2)
使用@Bean注释标记
add_action( 'save_post', 'set_post_meta_func');
function set_post_meta_func($post_id)
{
/* return if not porpoerty post */
$post_type = get_post_type($post_id);
if ( "property" != $post_type )
return;
/* return if revision */
if(wp_is_post_revision( $post_id ))
return;
/* return if not published */
if("publish" != get_post_status($post_id))
return;
// unhook this function so it doesn't loop infinitely
remove_action( 'save_post', 'set_post_meta_func' );
// update the post, which calls save_post again
update_post_meta($post_id, "REAL_HOMES_property_id", "your value here");
// re-hook this function
add_action( 'save_post', 'set_post_meta_func' );
}