方式一:Restlight-Core
单独使用
Note
使用该种方式需要手动生成Route
信息。
eg.
自定义RouteRegistryAware
public interface RouteRegistryAware {
/**
* This callback method is invoked when all the internal routes have been registered to {@code registry}.
*
* @param registry registry
*/
void setRegistry(RouteRegistry registry);
}
应用启动时通过自动注入的方式将RouteRegistry
传递给RouteRegistryAware
的实现类,在程序运行期间可以通过RouteRegistry
动态的添加/卸载路由。
将自定义的RouteRegistryAware
在应用启动时添加到启动上下文中
Restlight.forServer()
.daemon(false)
.deployments()
.addRouteRegistryAware(new CustomRouteRegistryAware())
.server()
.start();
通过将自定义的
RouteRegistryAware
或者RouteRegistryAwareFactory
配置成SPI加载的形式或者注入Spring
容器也可完成启动时注入的功能。
方式二:配合SpringMVC
或者JAX-RS
使用
Note
使用该种方式时框架将自动根据传入的Controller
类解析出Route
信息,使用者只需要关心Controller
即可。
eg.
自定义HandlerRegistryAware
public interface HandlerRegistryAware {
/**
* This callback method is invoked when all the internal handlers have been registered to {@code registry}.
*
* @param registry registry
*/
void setRegistry(HandlerRegistry registry);
}
应用启动时通过自动注入的方式将HandlerRegistry
传递给HandlerRegistryAware
的实现类,在程序运行期间可以通过HandlerRegistry
动态的添加/卸载路由。
将自定义的HandlerRegistryAware
在应用启动时添加到启动上下文中
Restlight.forServer()
.daemon(false)
.deployments()
.addHandlerRegistryAware(new CustomRouteRegistryAware())
.server()
.start();
Note
通过将自定义的HandlerRegistryAware
或者HandlerRegistryAwareFactory
配置成SPI加载的形式或者注入Spring
容器也可完成启动时注入的功能。