SpringCloud 在自定义程序包中注册事件
如果您不能或不想将org.springframework.cloud.bus.event的子包用于自定义事件,则必须使用@RemoteApplicationEventScan批注指定要扫描哪些包来扫描类型为RemoteApplicationEvent的事件。用@RemoteApplicationEventScan指定的软件包包括子软件包。
例如,考虑以下自定义事件,称为MyEvent:
package com.acme; public class MyEvent extends RemoteApplicationEvent { ... }
您可以通过以下方式在反序列化器中注册该事件:
package com.acme; @Configuration @RemoteApplicationEventScan public class BusConfiguration { ... }
不指定值,将注册使用@RemoteApplicationEventScan的类的包。在本示例中,使用包BusConfiguration注册了com.acme。
您还可以通过使用@RemoteApplicationEventScan上的value,basePackages或basePackageClasses属性来明确指定要扫描的软件包,如以下示例所示:
package com.acme; @Configuration //@RemoteApplicationEventScan({"com.acme", "foo.bar"}) //@RemoteApplicationEventScan(basePackages = {"com.acme", "foo.bar", "fizz.buzz"}) @RemoteApplicationEventScan(basePackageClasses = BusConfiguration.class) public class BusConfiguration { ... }
@RemoteApplicationEventScan的所有上述示例都是等效的,因为com.acme软件包是通过在@RemoteApplicationEventScan上显式指定软件包来注册的。
您可以指定要扫描的多个基本软件包。