Package Exports
- bpframework
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (bpframework) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
This project is still in development
Setup.
use cli to create a project.
npm i bpframework-cli -g
create a project.
bpframework init
Example.
see directory ./examples
Feature.
feature | supports |
---|---|
config | bootstrap.yml SpringCloudConfig |
discovery | nacos |
scheduling | @Scheduled |
api routers | @RestController |
Configure.
The appropriate configuration is required to enable the corresponding feature: config
name | description |
---|---|
FindMicroserviceConfigure | 定义自定义的服务发现处理方法 |
FeignClientConfigure | 定义FeignClient的默认headers等信息 |
RestControllerConfigure | 定义RestController的默认headers等信息 |
@FindMicroserviceConfigure
By default, nacos is used to find micro-service; You can customize it by @FindMicroserviceConfigure
.
@Service()
class Configure {
@FindMicroserviceConfigure
async onFindMicroservice(serviceName: string, excludeHost: string): Promise<ServiceInfo> {
return {
ip,
port,
serviceName,
metadata,
}
}
}
@RestControllerConfigure
定义RestController的默认headers等信息, 使用如下方式.
@Service()
class Configure {
@RestControllerConfigure
onConfigure(): bp.RestControllerConfigureInfo {
return {
defaultHeaders: {'content-type': 'application/json;charset=utf-8'},
}
}
}
@FeignClientConfigure
定义FeignClient的默认headers等信息, 使用如下方式.
@Service()
class Configure {
@FeignClientConfigure
onConfigure(): bp.FeignClientConfigureInfo {
return {
defaultHeaders: {'content-type': 'application/json;charset=utf-8'},
/**
* 对每次请求后接收的消息进行过滤.
*/
filterResponseCallback: (data: FeignClientFilterResponseData) => {
}
}
}
}
@Value
使用 @Value 注解设置初始值或获取配置值.
@Service()
class Demo {
@Value("Miss A")
teacher1Name: string; // will set to 'Miss A'
@Value("${teacherName2}")
teacher2Name: string; // will set to config value "teacherName2"
@Value("${teacherName3:defaultName}")
teacher3Name: string; // will set to 'defaultName' if config value "teacherName3" isn't existed.
}
Middleware.
see https://github.com/bpcloud/middleware.git
Event Listener.
name | description |
---|---|
ContextRefreshedEventListener | 本地配置加载完成, 系统service对象初始化完成 |
RefreshRemoteEventListener | 远程配置动态刷新事件 |
InstanceRegisteredEventListener | 实例注册到注册中心后的事件 |
@ContextRefreshedEventListener
本地配置加载完成, 系统service对象初始化完成.
@Service()
class ApplicationEvent {
@ContextRefreshedEventListener
async onContextRefreshed(ev:ContextRefreshedEvent):void {
}
}
@RefreshRemoteEventListener
远程配置动态刷新事件.
@Service()
class ApplicationEvent {
@RefreshRemoteEventListener
async onRefreshRemote(ev:RefreshRemoteEvent):void {
}
}
@InstanceRegisteredEventListener
实例注册到注册中心后的事件.
@Service()
class ApplicationEvent {
@InstanceRegisteredEventListener
async onInstanceRegistered(ev:InstanceRegisteredEvent):void {
}
}
Scheduling
@Scheduled
使用此注解可以开启一个定时任务.
@Service()
class Demo {
@Scheduled({cron:'* * * * * *'})
async onTick(): Promise<false|void> {
return false; // 返回false则表明停止此task.
}
}
- Start task: 当类实例被创建后, task即按照时间间隔运行
- Stop task: 当@Scheduled修饰的方法明确返回false时, task将停止