@EnableAsync——启用Spring的异步方法执行功能(开关)，类似于<task:*> XML命名空间的功能

在@Configuration类上使用如下：

mode()属性用来控制如何应用通知的代理行为，默认使用AdviceMode.PROXY，其它属性控制代理行为。
注意：如果mode属性被设置为AdviceMode.ASPECTJ，那么proxyTargetClass()属性是必须设置的。
同时，要注意spring-aspects模块的JAR包必须要在类路径下。

默认情况下，SimpleAsyncTaskExecutor会被用于处理异步方法调用。
为了自定义此行为，需实现AsyncConfigurer接口并通过getExecutor()方法提供自己的执行器(Executor)。

示例演示了"基于代码的方法"如何允许通过直接访问实际的组件来实现最大化的可配置性。

注意：在上述示例中，ThreadPoolTaskExecutor并非是一个全由Spring管理的Bean，如果你希望它是一个完全由Spring管理的bean，请在getAsyncExecutor()方法上增加@Bean注解。
在这种情况下，不再需要手动调用executor.initialize()方法，因为该方法在bean初始化时会被自动调用。

Class<? extends Annotation> annotation()——表示在任何类型或方法级别上检测到的"异步"注解类型。
默认情况下，@Async和EJB 3.1的@javax.ejb.Asynchronous会被检测到。
本设置属性的存在使得开发人员可以提供自己的注解类型来表明一个方法应该被异步调用。

boolean proxyTargetClass() default
false——表示基于子类的(CGLIB)代理是否被创建，而不是标准的基于接口的Java代理。
注意：设置该属性为true会影响所有Spring管理的需要代理的beans，不仅仅是被标记为@Async的那些。

AdviceMode mode() default AdviceMode.PROXY——表示如何应用异步通知的代理行为。

int order() default
Ordered.LOWEST_PRECEDENCE——表示应用于AsyncAnnotationBeanPostProcessor的顺序。

默认值是Ordered.LOWEST_PRECEDENCE，为了在所有其他后置处理器之后运行，这样可以在现有的代理上添加一个通知器(advisor)，而不是双重代理。