我通过 Spring Boot 并使用 JAX-RS (Jersey) 构建了一个应用程序。对于 JAX-RS 资源 Spring DI 工作正常,但对于子资源 - 不是。我将在下面提供示例:
子资源:
@Path("/")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class InjuryResource {
@Autowired
private InjuryRepository injuryRepository;
@Autowired
private AthleteRepository athleteRepository;
// logic goes here
}
如果我将此类称为父资源的子资源,如下所示:
@Path("/athletes")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class AthleteResource {
// other logic
@Path(ATHLETE_ID_PATH + INJURIES_PATH)
public InjuryResource getInjuryResource() {
return new InjuryResource();
}
}
然后没有将存储库注入这些资源,如果我将其用作基本资源,则注入工作正常。
我已经尝试过这个解决方案,并通过调试器检查了依赖项设置为 InjuryResource 但它没有帮助(当请求被提出时,该资源中的存储库指向 null,但是,我看到它们被注入了):
@Configuration
public class InjuryResourceConfig {
@Autowired
private AthleteRepository athleteRepository;
@Autowired
private InjuryRepository injuryRepository;
@Bean
public InjuryResource createBean() {
InjuryResource injuryResource = new InjuryResource();
injuryResource.setAthleteRepository(athleteRepository);
injuryResource.setInjuryRepository(injuryRepository);
return injuryResource;
}
}
正如我正确理解的那样,Spring 不控制 JAX-RS 中子资源的生命周期?如果是真的,那么如何将存储库注入到子资源中?
感谢你的帮助!