Question

Comment activer l'annotation @Required en Java (Spring 3.1)?Pas dans un xml, mais via Java.Aussi sous quelle annotation je mets cette activation?Sous @Feature (dans @FutureConfiguration ou @Bean (dans @Configuration)?

< gagnantEdit:

    @Feature
    public MvcAnnotationDriven annotationDriven(ConversionService conversionService) {
        return new MvcAnnotationDriven().conversionService(conversionService)
                .argumentResolvers(new CustomArgumentResolver());
    }

Est-ce que cela active toutes les annotations?

Était-ce utile?

La solution

La réponse de @ anubhava fonctionne, mais il a fait référence au manuel Spring 2.0, qui date de 5 ans.

Dans la configuration XML, Spring 3.x a une approche plus élégante: <context:annotation-config/>.Cela a également activé tout un tas d'autres fonctionnalités que vous voudrez probablement, alors que RequiredAnnotationBeanPostProcessor n'en permet que quelques-unes.

Voir Manuel Spring 3.x .

Si vous utilisez une configuration de style @Bean, alors les annotations comme @Required devraient déjà être activées, puisque c'est ainsi que fonctionne @Bean.Cependant, il est possible qu'il s'agisse d'un bogue - Spring 3.1 est encore au début de la version bêta, et de gros morceaux sont susceptibles d'être cassés.

À moins que vous ne sachiez vraiment ce que vous faites, je vous recommande vivement de vous en tenir à la version 3.0.x.

Autres conseils

Extrait du manuel Spring :

Il y a un dernier petit (petit, petit) morceau de configuration Spring qui est nécessaire pour `` allumer '' ce comportement. Annotant simplement le Les propriétés 'setter' de vos classes sont pas assez pour obtenir ce comportement. Toi besoin d'activer un composant qui est conscient de l'annotation @Required et qui peut le traiter de manière appropriée.

Ce composant est le RequisAnnotationBeanPostProcessor classe. C'est un spécial Implémentation de BeanPostProcessor qui est @ Required-aware et en fait fournit le 'sauter si cela est nécessaire la propriété n'a pas été définie «logique. Il est très facile à configurer; laissez tomber la définition de bean suivante en votre configuration Spring XML.

<bean class=
"org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor"/>

Veuillez vérifier: http://static.springsource.org /spring/docs/2.0.x/reference/metadata.html

Utilisez AnnotationConfigApplicationContext si vous ne souhaitez pas utiliser XML:

Contexte d'application autonome, accepter les classes annotées en entrée - en particulier @Configuration-annotated classes, mais aussi @Components simple et classes conformes JSR-330 utilisant annotations javax.inject.Permet enregistrement des classes une par une (register(java.lang.Class...)) ainsi comme pour l'analyse des chemins de classe (scan(java.lang.String...)).

En cas de configuration multiple classes, méthodes Bean définies ultérieurement les classes remplaceront celles définies dans classes antérieures.Cela peut être mis à profit pour remplacer délibérément certains haricots définitions via une configuration supplémentaire classe.

Exemple de code:

ConfigurableApplicationContext applicationContext =
new AnnotationConfigApplicationContext(
    "com.mycompany.package1",
    "com.mycompany.package2",
    "com.mycompany.package3"
    // etc.
);
applicationContext.refresh();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top