在我的Angular 6应用中,我正在通过Http服务加载这样的外部配置:
export function getSettings(appLoadService: ConfigLoadService) {
return () => appLoadService.getSettings();
}
@NgModule({
imports: [
CommonModule
],
declarations: [],
providers: [
ConfigLoadService,
{provide: APP_INITIALIZER, useFactory: getSettings, deps: [ConfigLoadService], multi: true}]
})
export class AppLoadModule {
}
服务:
@Injectable()
export class ConfigLoadService {
constructor(private http: HttpClient) {
}
getSettings(): Subscription {
console.log("Loading config from server...");
return this.http
.get("/config.json")
.subscribe((config: any) => {
AppSettings.API_BASE_URL = config.API_BASE_URL;
console.log("API_BASE_URL: " + AppSettings.API_BASE_URL);
});
}
}
现在,我想添加一个外部依赖关系,需要使用当前配置对其进行初始化:
@NgModule({
imports:
DepModule.forRoot({
apiBaseUrl: AppSettings.API_BASE_URL
}),
],[...]
这里的问题是依赖项是在APP_INITIALIZER
之前导入和初始化的,因此没有正确配置。我在这里想念什么?
答案 0 :(得分:1)
val data = pubsubStream.map(message => new String(message.getData(), StandardCharsets.UTF_8))
data.foreachRDD{ rdd =>
import sparkSession.implicits._
val df = rdd.toDF()
df.repartition(1).write.mode("append").save(output)
}
ssc.start()
ssc.awaitTermination()
提供者工厂方法必须返回一个诺言
因此,您将执行以下操作:
APP_INITIALIZER
Juri做了一个关于它的博客,您可以阅读更多App Runtime Config