Spring @Configuration аннотация @Autowired service имеет значение null

Я использую конфигурацию Spring и конфигурацию Джерси.

Это моя весенняя конфигурация:

@Component
@Configuration
@EnableScheduling
@EnableAspectJAutoProxy
@EnableTransactionManagement
@ComponentScan(basePackages = { "my.packages" })

public class SpringConfig {

private static final String MESSAGE_SOURCE_BASE_NAME = "i18n/messages";

@Profile(Profiles.APPLICATION)
@Configuration
@PropertySource("classpath:application.properties")
static class ApplicationProperties {
}

@Bean
public BCryptPasswordEncoder bCryptPasswordEncoder() {
    return new BCryptPasswordEncoder(11);
}

@Bean
public TaskScheduler taskScheduler() {
    return new ConcurrentTaskScheduler();
}

@Bean
MessageSource messageSource() {
    ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
    messageSource.setBasename(MESSAGE_SOURCE_BASE_NAME);
    messageSource.setUseCodeAsDefaultMessage(true);
    return messageSource;
}

}

Это мой класс обслуживания и интерфейс:

public interface DAOService {
    User register(User user)
}


@Service
public class DAOServiceImpl implements DAOService {

   @Override
   User register(User user){
      return null;
   }

 }

Это мой ресурс джерси:

Внутри класса ResourceSecurityService я хочу использовать @Autowire для класса DAOService, но получаю исключение с нулевым указателем, daoService всегда имеет значение null.

@Component
@Path("/security")
@Produces({ MediaType.APPLICATION_JSON })

public class ResourceDAOService  {

@Autowired 
private DAOService daoService ; //<--- here daoService is null;

@POST
@Path("/register")
@Consumes({ MediaType.APPLICATION_JSON })
@Transactional
public Response register(User user, @Context HttpServletRequest request,
        @Context HttpServletResponse response) throws AppException {
    return Response.status(Response.Status.CREATED).entity(securityService.register(user)).build();
}

Я использую весеннюю версию 4.3.8.RELEASE со следующими зависимостями:

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aspects</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${spring.version}</version>
    </dependency>

person Andrew    schedule 23.07.2018    source источник
comment
не могли бы вы поделиться структурой вашего проекта?   -  person Kathirvel Subramanian    schedule 23.07.2018
comment
Автосвязанная зависимость не может быть null в вашем приложении. Это может быть только null, если вы или другой фреймворк создаете экземпляры bean-компонентов. В этом случае вы используете Джерси и не настроили правильную интеграцию Джерси - Spring.   -  person M. Deinum    schedule 23.07.2018
comment
Взгляните на этот пример проекта, чтобы узнать обо всех конфигурациях свойств и зависимостях, необходимых для интеграции Spring. с Джерси (без использования Spring Boot)   -  person Paul Samsotha    schedule 23.07.2018
comment
см. также   -  person Paul Samsotha    schedule 23.07.2018


Ответы (1)


Было бы лучше, если бы вы предоставили ссылку на ваш проект. По информации вижу:

  • убедитесь, что у вас есть jersey-spring4 зависимость
  • убедитесь, что ваша версия Джерси совместима с интеграционной зависимостью
  • проверить конфигурацию вашего проекта

Я советую вам использовать Spring Boot с автоматической настройкой.

person Lev Khruschev    schedule 23.07.2018