Я использую конфигурацию 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>
null
в вашем приложении. Это может быть толькоnull
, если вы или другой фреймворк создаете экземпляры bean-компонентов. В этом случае вы используете Джерси и не настроили правильную интеграцию Джерси - Spring. - person M. Deinum   schedule 23.07.2018