private void initializeFunctionInstanceInjector()

in src/main/java/com/microsoft/azure/functions/worker/broker/JavaFunctionBroker.java [159:179]


	private void initializeFunctionInstanceInjector() {
		ClassLoader prevContextClassLoader = Thread.currentThread().getContextClassLoader();
		try {
			//ServiceLoader will use thread context classloader to verify loaded class
			Thread.currentThread().setContextClassLoader(classLoaderProvider.createClassLoader());
			Iterator<FunctionInstanceInjector> iterator = ServiceLoader.load(FunctionInstanceInjector.class).iterator();
			if (iterator.hasNext()) {
				this.functionInstanceInjector = iterator.next();
				WorkerLogManager.getSystemLogger().info("Load function instance injector: " + this.functionInstanceInjector.getClass().getName());
				if (iterator.hasNext()){
					WorkerLogManager.getSystemLogger().warning("Customer function app has multiple FunctionInstanceInjector implementations.");
					throw new RuntimeException("Customer function app has multiple FunctionInstanceInjector implementations");
				}
			}else {
				this.functionInstanceInjector = newInstanceInjector();
				WorkerLogManager.getSystemLogger().info("Didn't find any function instance injector, creating function class instance every invocation.");
			}
		} finally {
			Thread.currentThread().setContextClassLoader(prevContextClassLoader);
		}
	}