def _configure_injector(self, modules):
        """Create the injector and install the modules.

        There is a necessary order of calls. First we have to bind `Config` and
        `Zsl`, then we need to register the app into the global stack and then
        we can install all other modules, which can use `Zsl` and `Config`
        injection.

        :param modules: list of injection modules
        :type modules: list
        """
        self._register()
        self._create_injector()
        self._bind_core()
        self._bind_modules(modules)
        self.logger.debug("Injector configuration with modules {0}.".format(modules))
        self._dependencies_initialized = True