@@ -3,6 +3,7 @@ package task
33import (
44 "encoding/json"
55 "fmt"
6+ "os"
67 "runtime/debug"
78 "strconv"
89 "sync"
@@ -99,21 +100,35 @@ func (service *TaskService) SetOnEndHandler(handler TaskHandle) {
99100}
100101
101102// LoadConfig 如果指定配置文件,初始化配置
103+ // Deprecated: Use the LoadFileConfig instead
102104func (service * TaskService ) LoadConfig (configFile string , confType ... interface {}) * TaskService {
105+ return service .LoadFileConfig (configFile , confType ... )
106+ }
107+
108+ // LoadFileConfig 如果指定配置文件,初始化配置
109+ func (service * TaskService ) LoadFileConfig (configFile string , confType ... interface {}) * TaskService {
103110 cType := ConfigType_Xml
104111 if len (confType ) > 0 && confType [0 ] == ConfigType_Json {
105112 cType = ConfigType_Json
106113 }
107114 if len (confType ) > 0 && confType [0 ] == ConfigType_Yaml {
108115 cType = ConfigType_Yaml
109116 }
117+ var config * AppConfig
110118 if cType == ConfigType_Json {
111- service . Config = InitJsonConfig (configFile )
119+ config = JsonConfigHandler (configFile )
112120 } else if cType == ConfigType_Yaml {
113- service . Config = InitYamlConfig (configFile )
121+ config = YamlConfigHandler (configFile )
114122 } else {
115- service . Config = InitConfig (configFile )
123+ config = XmlConfigHandler (configFile )
116124 }
125+ service .applyConfig (config )
126+ return service
127+ }
128+
129+ // applyConfig apply task config with AppConfig
130+ func (service * TaskService ) applyConfig (config * AppConfig ) * TaskService {
131+ service .Config = config
117132 if service .logger == nil {
118133 if service .Config .Global .LogPath != "" {
119134 service .SetLogger (NewFileLogger (service .Config .Global .LogPath ))
@@ -155,6 +170,18 @@ func (service *TaskService) LoadConfig(configFile string, confType ...interface{
155170 return service
156171}
157172
173+ // LoadConfigHandler load config handler and init task config
174+ func (service * TaskService ) LoadConfigHandler (configHandler ConfigHandle , configSource string ) * TaskService {
175+ config , err := configHandler (configSource )
176+ if err != nil {
177+ panic ("Task:LoadConfigHandler 配置源[" + configSource + "]解析失败: " + err .Error ())
178+ os .Exit (1 )
179+ } else {
180+ service .applyConfig (config )
181+ }
182+ return service
183+ }
184+
158185// RegisterHandler register handler by name
159186func (service * TaskService ) RegisterHandler (name string , handler TaskHandle ) * TaskService {
160187 service .handlerMutex .Lock ()
0 commit comments