У меня есть объект пул ресурсов:Spring - Запрос область видимости боба от объекта пула
public interface PooledResource {
...
}
@Component
public class ResourcePool {
public PooledResource take() { ... }
public void give(final PooledResource resource) { ... }
}
В настоящее время я использую этот пул следующим образом в моих JAX-RS конечных точках:
@Path("test")
public class TestController {
@Autowired
private ResourcePool pool;
@GET
Response get() {
final PooledResource resource = pool.take();
try {
...
}
finally {
pool.give(resource);
}
}
}
Это прекрасно работает. Однако, запрашивая PooledResource
вручную и вынужден не забывать оговорку finally
, я нервничаю. Я хотел бы реализовать контроллер следующим образом:
@Path("test")
public class TestController {
@Autowired
private PooledResource resource;
@GET
Response get() {
...
}
}
Здесь PooledResource
вводится, вместо того, чтобы управляющий бассейном. Эта инъекция должна быть запрошенной, а также после завершения запроса ресурс должен быть возвращен в пул. Это важно, иначе в конечном итоге у нас не хватит ресурсов.
Возможно ли это весной? Я играл с FactoryBean
, но, похоже, это не помогает вернуть бобов.
Благодарим за предложение. Работает ли HandlerInterceptor в сочетании с JAX-RS/Jersey? –
Я не уверен в этом, если нет, вы можете пойти на более низкий уровень и искать какой-то фильтр, который вы можете установить для запроса/ответов. – john16384