11
votes

Comment ajouter une annotation personnalisée au printemps MVC?

Quelqu'un peut-il expliquer ce que je dois faire pour mettre en œuvre ma propre annotation qui ajouterait des fonctionnalités à mes demandes Web?

Par exemple: P>

@Controller
public class MyController {
    @RequestMapping("/abc")
    @RequiresSomeSpecialHandling
    public void handleSecureRequest() {
    }
}


2 commentaires

BTW: Si "@requiresauth" n'est qu'un exemple, alors c'est bon, mais ne réinventez pas la sécurité du ressort


Ce n'était qu'un exemple - édité mon message pour rendre l'exemple plus générique.


3 Réponses :


4
votes

Ce type d'annotations (qui ajoutez une fonctionnalité supplémentaire lorsqu'on invoque une méthode) ressemble à des annotations qui déclenchent un conseil AOP.

@see printemps Référence Chapitre 7. Programmation orientée Pointe orientée avec printemps


L'idée est d'utiliser l'annotation pour déclencher les conseils de l'AOP.

J'aime: xxx


5 commentaires

Merci. Oui, AOP est sur ma liste, mais j'aimerais essayer de faire une annotation et de réutiliser autant d'installations MVC que possible.


@Rustyx: Oui, c'était l'idée de: utiliser l'annotation pour déclencher les conseils de l'AOP, voir ma réponse étendue pour l'illustrer.


Je trouve @nannotation pour être utile dans l'écriture des expressions de points de pointe.


Je ne veux pas @pointcut , je veux @MyOnnotation .


@Rustyx @pointcut est (l'une des) syntaxe de la syntaxe pour définir une pointe de pointe



-3
votes

Si la mise en cache est l'un de vos objectifs, jetez un coup d'œil à la @ kechable annotation (et ses frères et sœurs @cacheput , @cachetevict et @caching < / code>), disponible au printemps 3.1.


1 commentaires

Désolé, votre réponse est inutile pour moi. L'annotation @nocache dans mon exemple concernait le cache HTTP No-cache, pas la méthode cache, et ce n'était qu'un exemple de toute façon.



2
votes

dépend de ce que vous voulez faire à la suite de @requirSomespecialHandling. Par exemple. Voulez-vous qu'il influencent les mappages de demande ou l'invocation de la méthode (c'est-à-dire des arguments de la méthode de résolution du traitement de la valeur de retour)?

Le support des classes annotées au printemps 3.1 est devenu beaucoup plus personnalisable. Vous pouvez parcourir quelques exemples dans Ce repo .

Gardez également à l'esprit qu'un intercepteur de poignée au printemps 3.1 peut lancer l'objet du gestionnaire à HandlerMéthod, ce qui vous donne accès à la méthode exacte, y compris ses annotations. Cela peut suffire à ce que vous devez faire.


0 commentaires