Определен ли контекст приложения Spring Profile?

Я создал веб-проект с настроенным родительским дочерним контекстом приложения. Контекст корневого приложения, настроенный с помощью компонентов инфраструктуры (Datasource, Transaction, ORM, Cache, security) и контекст веб-приложения, настроенные с помощью средств разрешения представления, и все эти компоненты объединены в относительные профили следующим образом:

<context-param>
        <param-name>spring.profiles.default</param-name>
        <param-value>
            xml,
            cache,JDK,Ehcache,Redis,Memcache,xmemcached-Client,Composite,
            db,C3P0,
            orm,Hibernate,Hibernate4,
            transaction
        </param-value>
    </context-param>

<servlet>
        <servlet-name>rest</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath*:servlet/rest-servlet.xml</param-value>
        </init-param>
        <init-param>
            <param-name>spring.profiles.active</param-name>
            <param-value>xml,combined</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

когда я пытаюсь запустить этот проект, я получаю эту ошибку:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cacheTestController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.test.springbasic.service.impl.ContactService org.test.springbasic.controller.CacheTestController.contactService; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.test.springbasic.service.impl.ContactService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

Я хочу знать, специфичен ли контекст приложения Spring для профиля (мои контроллеры в дочернем контексте и мои сервисы в корневом контексте и автоматически подключены к контроллерам), ContactService помечен @Profile({ "Hibernate" })почему я не могу получить бин, он там, я активировал профиль "Hibernate" под spring.profiles.default Контекст-пары!

1 ответ

Профили можно активировать несколькими способами. Давайте теперь посмотрим, какой из них имеет приоритет над другим, и что произойдет, если вы используете более одного - от самого высокого до самого низкого приоритета:

  1. Параметр контекста в web.xml
  2. WebApplicationInitializer
  3. Системный параметр JVM
  4. Переменная среды

Основываясь на приведенной выше информации, профили, установленные в init-param переопределить профили, установленные в context-param

Другие вопросы по тегам