Skip to content
xquan edited this page Oct 10, 2016 · 6 revisions

导航

English

首页

简介

在框架装载服务的时候,Service Profile特性能够让框架确定哪些服务能够被装载哪些服务必须被排除在外。 Service Profile是通过Tag来控制哪些服务能够装载哪些服务是被排除的。

Tag

每个服务可以定义一个或多个Tag。 例如:

@Service
@Tag({"p1", "p2"})
public class Service1 { ... }

配置Profile

仅仅在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配置详解

每个Profile具有4个可配置属性:name,model,matching,tags。

name

name属性指定了profile的名称,该名称必须唯一,如果有两个或多个profile名称相同,则在运行时将会抛出一个异常。

model

model是个枚举属性,可使用值为:include和exclude,该属性不区分大小写。

  • include指所有的service只要符合profile中定义的tag和matching属性的匹配规则,那么该service将会被框架装载,否则该service将不会被框架装载。
  • exclude指素有的service只要符合profile中定义的tag和matching属性的匹配规则,那么该service将不会被框架装载,否则该service将会被框架装载。

matching

matching是个枚举属性,可以使用的值为:satisfy-any和satisfy-all,该属性不区分大小写。

  • satisfy-all指所有的profile中定义的tags都必须匹配service中定义的Tag时,那么该service就认为是匹配的,否则则认为不匹配。
  • satisfy-any指只要profile中定义的任意一个Tag和service中定义的Tag匹配的话,那么该service就认为是匹配的,否则则认为不匹配。

tags

tags属性可以定义1个或多个Tag。

可配置属性

配置路径 配置类型 配置描述 是否必须 默认值(行为)
app.active-profile 字符串 指定当前激活的profile的名称 默认的profile将load所有的service
profiles List 包含1个或多个profile的定义
Clone this wiki locally