Question

J'ai remarqué de plusieurs pages Web qui apparemment Spring 3.0 prend en charge @Inject de JSR-330. Comme nous vraiment d'utiliser la syntaxe JSR-299 pour l'injection de dépendance dans nos bibliothèques pour les applications Web et les applications autonomes et avoir des alternatives à souder, ce serait bien si le printemps pourrait le faire.

Être un novice au printemps, j'ai essayé de télécharger la distribution Spring Framework et mettre tous les pots sur le chemin de construction Eclipse. Aucune annotation Injecter donc mon projet de test existant à l'aide de soudure ne compile pas.

Peut-on faire avec le printemps? Que dois-je faire pour le faire fonctionner?

(Je suis conscient que Guice éventuellement soutiendra aussi. Il est seulement dans SVN pour l'instant, et s'il y a une sortie officielle de printemps qui peut, ce serait mieux.)


Il peut être fait. Le pot JSR-330 doit être téléchargé séparément, et cglib pour analyser les @Configuration manuellement écrites classes, plus un bien commun la mise en œuvre d'exploitation forestière.

La plus grande différence de soudure semble être que les besoins de câblage à la main écrit au lieu de trouver comme par magie (un peu plus lourd, mais peut faire des applications plus robustes), plus le temps de démarrage est beaucoup moins. Je suis encore nouveau au printemps - est-il un moyen d'avoir des classes @Configuration autodiscovered

Était-ce utile?

La solution

De Spring 3.0.x documentation Référence :

  

L'annotation @Inject de JSR 330 peut être utilisé à la place de @Autowired de printemps dans les exemples ci-dessous. @Inject n'a pas une propriété nécessaire contrairement à l'annotation @Autowire de printemps qui a une propriété nécessaire pour indiquer si la valeur étant injectée est facultative. Ce comportement est automatiquement activé si vous avez la JSR 330 JAR sur le chemin de classe.

Vous pouvez rendre votre code agnostique du cadre de DI en utilisant @Inject, mais vous avez encore besoin d'inclure un pot avec les classes de javax.inject dans votre projet parce que le printemps ne les expédie pas lui-même. Vous pouvez trouver le pot correspondant dans la section téléchargements JSR-330 Site Google Code de .

Autres conseils

Le paquet javax.inject ne sont pas inclus dans le cadre du printemps 3, mais il ne supporte si elle est présente.

Si vous regardez la source de AutowiredAnnotationBeanPostProcessor, vous verrez le constructeur utilise la réflexion pour localiser javax.inject.Inject, et enregistre un message si elle le trouve. Il n'y a pas de dépendance à la compilation sur elle.

Vous aurez besoin de localiser les JSR-330 JARs d'une autre source (par exemple, le SDK JavaEE 6).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top