自动配置替换导入的服务

当我在主配置中导入服务时:


imports:

    - { resource: services/attribute_loaders.yaml }

包含文件中的服务将替换为自动配置的版本,因此我错过了所有配置的标签:


services:

  App\Infrastructure\Bridge\Doctrine\EventListener\AttributeLoader\OrderAttributeLoader:

    autowire: true

    tags:

      - name: 'doctrine_mongodb.odm.event_listener'

        entity: 'App\Infrastructure\Bridge\Doctrine\EventListener\AttributeLoader\OrderAttributeLoader'

        event: 'postLoad'

作为解决方法,我已将我的服务从自动配置中排除。


有没有办法把服务分解成几个文件?


GCT1015
浏览 85回答 1
1回答

小怪兽爱吃肉

你就是这么做的。如果您要使用多个文件来配置服务,则无法两次定义相同的服务。您的定义需要足够具体,这样它们才不会重叠。如果您要使用广泛的resource设置,则需要添加所有相应的排除项,以便在不同文件中定义的服务在此之前不会被定义:services:  App\:     resource: '../src/*'     exclude:       - '../src/Infrastructure/Symfony/DependencyInjection'       - '../src/Infrastructure/Symfony/Kernel.php'       - '../src/Tests'       - '../src/Messenger'src/Messenger属于命名空间的上的服务App\Messenger可以在不同的文件上独立定义:例如这样的事情:# messenger_services.yamlservices:    _defaults:        autowire: true      # Automatically injects dependencies in your services.        autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.        public: false        App\Messenger\CommandHandler\:        resource: '../../src/Messenger/CommandHandler/*'        tags:          - {name: 'messenger.message_handler', bus: command.bus}    App\Messenger\EventHandler\:        resource: '../../src/Application/EventHandler/*'        tags:          - {name: 'messenger.message_handler', bus: event.bus}
打开App,查看更多内容
随时随地看视频慕课网APP