-
Notifications
You must be signed in to change notification settings - Fork 5
Service Profile cn
xquan edited this page Oct 10, 2016
·
6 revisions
在框架装载服务的时候,Service Profile特性能够让框架确定哪些服务能够被装载哪些服务必须被排除在外。 Service Profile是通过Tag来控制哪些服务能够装载哪些服务是被排除的。
每个服务可以定义一个或多个Tag。 例如:
@Service
@Tag({"p1", "p2"})
public class Service1 { ... }
仅仅在service上定义Tag是不够的,还需要告诉框架哪些被Tag的服务能够被装载或不能被装载,因此需要引入profile的配置。 在配置文件中可以配置一个或多个profile,比如:
profiles:
- name: profile1
model: exclude
matching: satisfy-all
tags:
- p1
- p2
- name: profile2
model: include
matching: satisfy-any
tags:
- p2
- p3
上面的配置文件中配置了两个profile,一个名为profile1,另一个名为profile2。 当在配置文件中配置了profile后,接下来需要指定在运行时激活哪个profile,通过在应用启动参数中指定激活的profile名称,比如:
profile=profile1
这样在运行就将激活profile1。
每个Profile具有4个可配置属性:name,model,matching,tags。
name属性指定了profile的名称,该名称必须唯一,如果有两个或多个profile名称相同,则在运行时将会抛出一个异常。
model是个枚举属性,可使用值为:include和exclude,该属性不区分大小写。
- include指所有的service只要符合profile中定义的tag和matching属性的匹配规则,那么该service将会被框架装载,否则该service将不会被框架装载。
- exclude指素有的service只要符合profile中定义的tag和matching属性的匹配规则,那么该service将不会被框架装载,否则该service将会被框架装载。
matching是个枚举属性,可以使用的值为:satisfy-any和satisfy-all,该属性不区分大小写。
- satisfy-all指所有的profile中定义的tags都必须匹配service中定义的Tag时,那么该service就认为是匹配的,否则则认为不匹配。
- satisfy-any指只要profile中定义的任意一个Tag和service中定义的Tag匹配的话,那么该service就认为是匹配的,否则则认为不匹配。
tags属性可以定义1个或多个Tag。
配置路径 | 配置类型 | 配置描述 | 是否必须 | 默认值(行为) |
---|---|---|---|---|
app.active-profile | 字符串 | 指定当前激活的profile的名称 | 否 | 默认的profile将load所有的service |
profiles | List | 包含1个或多个profile的定义 | 否 | 无 |