Spring не инициализирует классы, помеченные аннотацией @Named - PullRequest
0 голосов
/ 01 февраля 2020

В моем приложении я использую - xml и объявление bean на основе аннотаций. Мы также используем JSR330 - @Named и @ Inject.

Проблема заключается в том, что классы, помеченные как @Named, не инициализируются контейнером Spring, даже если тег компонентного сканирования определен в файле xml.

Это работает, если @Named заменяется на @Component, а @Inject заменяется на @ Autowired.

Как я могу заставить его работать с аннотацией @ Named / @ Inject?

Код и Фрагменты конфигурации приведены ниже:

@RestController
@EnableWebMvc
@RequestMapping( "/Demo" )
public class DemoRestController
{

    @Inject
    private TestServiceImpl testServiceImpl;
....

}

Класс обслуживания следующим образом:

package com.test.service
@Named
public class TestServiceImpl implements TestService
{
    ...
}

и xml Конфигурация выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:task="http://www.springframework.org/schema/task"
       xsi:schemaLocation="
           http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context.xsd
           http://www.springframework.org/schema/task
           http://www.springframework.org/schema/task/spring-task.xsd
           ">

     <context:annotation-config/>   
    <context:component-scan base-package="com.test.service" />
    </beans>
...