2016-07-18 9 views
0

У меня есть фасоль с @RequestScope, и когда я ввожу его в один из моих синглтонов, он вводится как одноэлементный, а не как область запроса. Однако, если я изменяю @RequestScope на @Scope(value = "request", scopeName = "request", proxyMode = ScopedProxyMode.TARGET_CLASS), Spring создает компонент в виде области запроса и правильно вводит их в синглтон.Почему JSR-330 не работает с Джерси и весной

Я прочитал документацию Весну относительно этого:

Область JSR-330 по умолчанию является как прототип в Spring. Однако, чтобы поддерживать его в соответствии с общими значениями по умолчанию Spring, компонент JSR-330, объявленный в контейнере Spring, по умолчанию является одиночным. Чтобы использовать масштаб, отличный от singleton, вы должны использовать аннотацию Spring @Scope. javax.inject также предоставляет аннотацию @Scope. Тем не менее, этот только предназначен для использования для создания собственных аннотаций.

Означает ли это также, что @RequestScoped действительно игнорируется весной? Существует ли какой-либо поставщик/резольвер, который разрешает эту проблему с помощью Spring? Насколько это возможно, я хочу использовать @RequestScoped аннотации вместо @Scope аннотирования весной, как мы должны использовать JSR аннотации только

http://docs.spring.io/spring/docs/4.2.5.RELEASE/spring-framework-reference/html/beans.html#beans-standard-annotations-limitations

+0

Напишите свой собственный, если вы действительно хотите, есть образцы для этого вокруг интернета. В документации довольно ясно, что она не работает. –

+0

Я видел несколько блогов об этом, но они были написаны много лет назад, поэтому мне было интересно, весна ли уже проблема, так как JSR 330 является стандартом – qaxi

+1

Как уже упоминалось, нет, это не так и не будет объяснено недавней документацией, которую вы сами указывают на. –

ответ

1

Как отметил М. Deinum, весна не поддерживает @RequestScoped из из коробки. Я должен был создать ScopeMetadataResolver для преобразования @RequestScoped в Спринг @Scope

я упомянул здесь для моего пользовательского распознавателя:

https://github.com/matzew/spring-cdi-bridge/blob/master/src/main/java/net/wessendorf/spring/scopes/CdiScopeMetadataResolver.java