/// <summary> /// 框架初始化入口 /// </summary> /// <param name="serviceInstall"></param> /// <param name="appConfig">注意:是在日志和配置模块初始化前调用的</param> public static void Initialize(Action <IServiceContainer> serviceInstall, Action <HostAppOptions> appConfig = null) { //IOC init var serviceContainer = new SimpleServiceContainer(); ServiceLocator.SetServiceContainer(serviceContainer); //App中配置 _preConfigAction?.Invoke(serviceContainer.Container); appConfig?.Invoke(HostApp.Options); //SimpleInjector调用GetInstance后,就无法再Register!这里只能手动创建。 LogService.SetProvider(new Log4netIntegration(HostApp.Options.AppName)); CentralConfiguration.SetProvider <ConsulConfigProvider>(new AppSettingProvider()); EntMapper.SetProvider(new ObjMapster()); //Reg basic func implement. serviceContainer.Register <IJsonSerializer, JsonSerializer>(LifeStyleType.Singleton); if (!HostApp.Options.IsStandalone) { serviceContainer.Register <ICacheProvider, RedisCache>(LifeStyleType.Singleton); serviceContainer.Register <IDistributedSrvProvider, RedisDistSrvProvider>(LifeStyleType.Singleton); //不是Dev环境则启用集中日志(因为读取了配置,故放在配置初始化后执行) if (!CentralConfiguration.IsEnvDev()) { Log4netIntegration.AddCentralLog(); } } //最后执行应用初始化,确保日志、配置等实现都已注册! serviceInstall?.Invoke(serviceContainer); }
public ConsulConfigProvider() { if (CentralConfiguration.IsEnvDev()) { LogService.DebugFormat("DeployEnv:{0}, Consul address:{1}", CentralConfiguration.DeployEnv, _client.Config.Address); } }