Je travaille avec le cadre de printemps 3.0 et toujours un novice. Quelqu'un peut-il m'expliquer en termes de laïcs qu'est-ce que la programmation AOP? (un court exemple aidera définitivement) p>
Comment le ressort incorpore / l'améliore / le supporte-t-il? p>
5 Réponses :
AOP est un motif utilisé pour modulariser des traits transversaux. Donc, s'il existe une certaine "chose" qui s'applique à une partie importante de votre code, vous pouvez utiliser un AOP pour résoudre ce problème. Ces "choses" sont appelées aspects.
Un exemple ci-dessous: p>
Un enregistreur d'exception est utilisé dans l'application Enterprise. Vous pouvez donc la configurer à l'aide de l'AOP de la manière suivante. Donc, maintenant toutes les méthodes sous mon ensemble My.Service seront consignées de la manière suivante. P>
public class ExceptionLogger { private static Logger logger = Logger.getLogger(ExceptionLogger.class); public void logIt(JoinPoint jp, Exception e) { StringBuilder msg = new StringBuilder(); msg.append("<whatever makes sense>"); logger.error(msg.toString()); } }
"AOP est un motif utilisé pour modulariser des traits transversaux." Pouvez-vous expliquer cette déclaration? Qu'entendez-vous par les traits transversaux? Pouvez-vous fournir des liens / articles utiles pour expliquer cela? Merci
La journalisation, la gestion des transactions, le timing (comme @mebigfatguy) mentionné dans son poste sont de bons exemples de coupe transversale. Puisque ceux-ci en général s'appliquent à toutes les méthodes. Par conséquent, au lieu d'écrire le même code de la plaque de la chaudière encore et encore, vous les définissez comme des aspects et le ressort de la Voila fait sa magie ou vous. J'espère que cela t'aides!
AOP em> est un moyen de modifier les classes existantes dans une base de code pour les embellir ou de modifier leur comportement en fonction des règles définies séparément. Cette modification peut être effectuée avant que les classes ne soient placées dans un pot / la guerre ou peuvent se produire de manière dynamique tant que le code est chargé. L'idée est plutôt que de trouver tous les points de code que vous souhaitez modifier dans la source. Code et les modifier de la main, vous définissez des règles pour savoir comment trouver des points d'intérêt dans la base de code et quelles embellissements vous aimeriez faire. Ces règles sont appelées aspects (le a em> de aop em>). P> L'exemple prototypique Vous souhaitez obtenir des informations de synchronisation sur diverses méthodes de votre base de code. Vous pouvez aller trouver toutes les méthodes d'intérêt et sur le dessus, mettez un appel à p> et à la fin do p> Vous pouvez plutôt définir des aspects qui disent quelles méthodes vous souhaitez modifier et que vous souhaitez faire des choses au début et à la fin de ces méthodes. p> lorsque le aop EM> est appliqué, soit au moment de la création de JAR, soit le temps de chargement de la classe, c'est comme si vous écrivez les classes de la manière à l'origine. p> p>
C'était sûrement utile .Pa vous fournir des liens / articles utiles très utiles et faciles pour les débutants, comme moi, de comprendre?
Malheureusement, il semble que ceux qui développent / évangéliser AOP ont tendance à y penser comme un niveau d'abstraction plus élevé que la programmation régulière, et présentent ainsi le matériau de manière relativement élevée, pleine de nouvelle terminologie et de rhétorique trop compliquant. J'ai regardé autour des échantillons et celui-ci est aussi proche d'une sorte d'exercice que je peux trouver. Il est probablement plus facile de comprendre que la plupart des: Andrewewhite.net/wordpress / 2010/03/17 / ... Cela ne signifie nulle part près de complète, mais pourrait vous avoir un goût.
En bref, l'AOP est une méthode de mathématicien d'expliquer comment vous devez organiser votre code sincèrement pour éviter d'avoir une fonctionnalité particulière dispersée dans des morceaux et des morceaux sur de nombreux modules ou objets. Au cœur, AOP est une bonne chose, que cela s'appelle ou non un AOP. p>
Mais vous êtes confronté à une implémentation spécifique de l'AOP et devez comprendre comment l'utiliser. Je pense que la meilleure façon de faire est de rechercher des blogs où les gens post des recettes et des exemples de la manière dont ils l'utilisent avec le printemps. De cette façon, vous contournez les mathéméticiens et vous permettent de lire les écrits d'ingénieurs qui sont plus en contact avec la réalité. P>
Il existe deux types de scientifiques informatiques, mathématiciens qui ravissent la terminologie obscure et utilisent la terminologie torturée pour expliquer des choses simples et des ingénieurs qui vous diront étape par étape comment créer des logiciels. Les programmeurs de travail ont tendance à être plus de l'état d'esprit d'ingénieur car les penseurs abstraits ont du mal à gérer le long slog d'expérience acquise. C'est pourquoi vous trouvez un AOP difficile à comprendre. Pas parce qu'il est difficile de comprendre, mais parce que cela est expliqué si mal par des penseurs mathématiques abstraits qui ne sont pas terriblement familiers avec "l'anglais clair". P>
Je me demande ce qui se passerait si un gourou AOP s'assit avec une analyse de point de fonction GURU. P>
AOP permet un développement cohérent par séparation (module) de préoccupations transversales en aspects. Mettez-le simple, EM> C'est juste un intercepteur pour intercepter certains processus, par exemple, lorsqu'un procédé est exécuté, l'AOP à ressort peut détourner la méthode d'exécution et ajouter une fonctionnalité supplémentaire avant ou après l'exécution de la méthode. p>
Remarque: le ressort ne supporte pas l'AOP pour les méthodes marquées comme finale. P>
source p>
AOP fonctionne comme une programmation orientée objet. Dans la programmation orientée objet, l'unité de modularité est un objet, mais dans la programmation orientée forme de l'unité de modularité est Source P>
Spring fournit une programmation déclarative avec AOP. Il s'agit d'un meilleur moyen de mettre en œuvre des préoccupations transversales sans avoir besoin d'utiliser Code de plomberie EM> sur les classes de base. AOP vous permet de penser aux préoccupations ou aux aspects de votre système. Les préoccupations typiques sont la gestion des transactions, la journalisation, etc. L'AOP vous permet de capturer le code transversal dans des modules tels que les intercepteurs pouvant être appliqués de manière déclarée par où la préoccupation qu'ils expriment s'appliquent. Le ressort comprend un cadre d'AOP à base de proxy. P>
source p>
La programmation orientée de l'aspect est judicieusement nouvelle et ce n'est pas un remplacement de la programmation orientée objet. En fait, AOP est une autre façon d'organiser la structure de votre programme.
Pour être plus clair, je vais utiliser des diagrammes: P>
Qu'est-ce que l'aspect? p>
@Around( "execution(* *(..))" ) public Object trace(ProceedingJoinPointproceedingJP)throwsThrowable{ String methodInformation= proceedingJP.getStaticPart().getSignature().toString(); logger.trace("Entering "+methodInformation); try{ returnproceedingJP.proceed(); } catch(Throwable ex) { logger.error("Exception in "+methodInformation, ex); throw ex; } finally { logger.trace("Exiting "+methodInformation); } }
Jetez un coup d'œil à manuels de printemps , ils sont vraiment vraiment génial (honnête!)
J'ai essayé de lire des articles, des manuels et des forums pour comprendre l'AOP, mais je suis confondu avec tous les termes vagues et la langue abstraite utilisée (mon petit cerveau qui tente de traiter les termes)
Printemps en action, troisième édition chez Manning.com/walls4 donne une excellente explication de la programmation orientée vers Printemps.
Je vous suggère de suivre ce tutoriel de la théorie aux exemples de code: Comprendre le ressort AOP a>
Vérifiez cet article: Marcin-chwedczuk.github.io/... < / a>