当前位置: 首页 > 知识库问答 >
问题:

Symfony 3.3服务自动配置

司凡
2023-03-14

我正在尝试迁移到symfony 3.3并使用新功能autowire/autoconfigure服务:

所以services.yml我有:

services:
    _defaults:
        autowire: true
        autoconfigure: true
        public: false

    # makes classes in src/AppBundle available to be used as services
    AppBundle\:
        resource: '../../src/AppBundle/*'
        # you can exclude directories or files
        # but if a service is unused, it's removed anyway
        exclude: '../../src/AppBundle/{Entity,Controller,DQL,Form/DataTransformer,Repository}'

我声明我的小枝扩展为:

AppBundle\Twig\ImageExtension:
      arguments:
          $env: "%kernel.environment%"

和此服务的构造函数:

public function __construct(TokenStorage $token, UserRepository $userRepository, RedisCacheService $cache, string $env)
{
    $this->env = $env;
    $this->user = $token->getToken() ? $token->getToken()->getUser() : false;
    $this->userRepository = $userRepository;
    $this->cache = $cache;
}

似乎一切都好,但我得到了这个错误:

(1/1) AutowiringFailedException
Cannot autowire service "AppBundle\Twig\ImageExtension": argument "$env" of method "__construct()" must have a type-hint or be given a value explicitly.

也不知道如何修复它。

共有2个答案

堵远航
2023-03-14

所以问题是,如果我试图使用AppBundle的services.yml,如果我理解正确,从捆绑包导入服务的旧风格不适用于自动连接/自动配置,因为我们需要重写load()方法从AppExent使用类型提示。所以我已经把我所有的服务替换为应用/配置/services.yml,这对我很有帮助。

毕浩渺
2023-03-14

我有相同的错误消息,但由不同的错误引起。也许有人会觉得这很有用。

我的初始配置在服务中。yml是:

app.my_service:
    class: 'AppBundle\Service\MyService'
    arguments:
        $foobar: 'some value for foobar'
    public: true

我得到了这个错误:

无法自动连接服务"AppBundle\Service\MyService":方法"__construct()"的参数"$fobar"必须具有类型提示或显式地给出值。

几个小时后,我找到了解决办法

AppBundle\Service\MyService:
    arguments:
        $foobar: 'some value for foobar'

app.my_service:
    alias: AppBundle\Service\MyService
    public: true
 类似资料:
  • 我有一个 Rest Controller 类,其中我正在自动布线服务层。现在我想模拟测试类中的服务层,但在运行我的测试类 控制器代码 测试类 我是JUnit5和Mockito的新手。有人能告诉我哪里错了吗?

  • 我已经配置了spring cloud config,它从GitHub获取属性。如果发送到,我还可以在应用程序中获得更新的值。 我是否需要为它实现Rabbitmq和云总线,或者有任何其他简单的方法来实现它?另外,该文档指出,我们需要为推送通知添加对spring-cloud-config-monitor库的依赖关系。http://projects.spring.io/spring-cloud/spri

  • 介绍常用的服务配置。 云联壹云 平台支持基于climc命令修改常用服务配置。 说明 请确保First Node节点已正确初始化climc工具,配置步骤请参考CLIMC工具 通用配置命令如下 目前支持配置的服务有keystone、glance、region2、yunionapi、common等。 命令模式 在命令行下输入climc并带额定的参数获取相应的结果。 # 查看服务的配置信息 $ climc

  • 我想使用apache thrift开发一些本地网络服务。应该有多个服务等待一个主机连接到它们,并独占使用它们,直到主机释放它们。这些服务是用多种语言编写的。 之所以选择使用thrift,是因为我需要一些简单的远程过程调用机制,用于快速且支持多种语言的服务之间的通信。虽然thrift适合RPC,但我需要一些机制来通过一些自动发现机制定位服务TCP地址和端口,然后才能在不硬连接地址的情况下将thrif

  • 我在Symfony 3.4中开发一个迷你应用程序。正在使用Guard进行身份验证过程。我已经创建了一个名为LoginForm签字机的类,它扩展了AbstractFormLogin签字机。 接收错误: 无法自动连接服务“app.security.login\u form\u authenticator”:方法“AppBundle\security\LoginFormAuthenticator:::\

  • 本文向大家介绍Ubuntu下配置Tomcat服务器以及设置自动启动的方法,包括了Ubuntu下配置Tomcat服务器以及设置自动启动的方法的使用技巧和注意事项,需要的朋友参考一下   既然是Ubuntu,那就要利用好“新立得软件包管理器”了。   1.Tomcat需要jdk的支持,所以先说一下jdk的安装,已经安装好了jdk的可以直接看第2条。   1.1安装jdk   在新立得中搜索“sun-j