0

我通过 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 中子资源的生命周期?如果是真的,那么如何将存储库注入到子资源中?

感谢你的帮助!

4

0 回答 0