portaldacalheta.pt
  • Κύριος
  • Κατανεμημένες Ομάδες
  • Τροποσ Ζωησ
  • Αλλα
  • Κερδοφορία & Αποδοτικότητα
Πίσω Μέρος

Caching την άνοιξη με σχολιασμούς EhCache



EhCache είναι μια ευρέως χρησιμοποιούμενη, καθαρή προσωρινή μνήμη Java που μπορεί εύκολα να ενσωματωθεί με τα πιο δημοφιλή πλαίσια Java, όπως το Spring και το Hibernate. Συχνά θεωρείται η πιο βολική επιλογή για εφαρμογές Java, καθώς μπορεί να ενσωματωθεί εύκολα σε έργα. Συγκεκριμένα:

  • Μπορεί να ρυθμιστεί απλώς συμπεριλαμβάνοντας το JAR στο έργο σας. Δεν απαιτούνται πρόσθετα βήματα εγκατάστασης.
  • Τρέχει στην ίδια διαδικασία με την εφαρμογή, οπότε είναι γρήγορη. Δεν απαιτείται επιπλέον υπηρεσία για την εκτέλεση.

Εν ολίγοις, το EhCache είναι μια εξαιρετική επιλογή για οποιαδήποτε εφαρμογή καθαρού Java.



Επιπροσθέτως, Εαρινοί σχολιασμοί EhCache επιτρέπει την απρόσκοπτη ενσωμάτωση σε οποιαδήποτε εφαρμογή Spring προσθέτοντας απλώς σχολιασμούς σε προσωρινά αποθηκευμένες μεθόδους, χωρίς τροποποίηση των εφαρμογών της μεθόδου



Το EhCache είναι μια εξαιρετική λύση προσωρινής αποθήκευσης για έργα Spring.



Ενώ το EhCache παρέχει εμπλουτισμένα, πλούσια API για χειρισμό της προσωρινής μνήμης μέσω προγραμματισμού, αυτό το άρθρο επικεντρώνεται κυρίως ενισχύοντας τις εαρινές σας εφαρμογές με λιγότερο ενοχλητικό τρόπο με τους εαρινούς σχολιασμούς EhCache. Θα δημιουργήσουμε ένα έργο Spring MVC και θα αναπτύξουμε μια υπηρεσία ιστού RESTful στο Tomcat. Στη συνέχεια, το EhCache θα ενσωματωθεί στην υπηρεσία διαδικτύου.

Επισκόπηση έργου

Θα παρουσιάσουμε τους σχολιασμούς EhCache στο πλαίσιο ενός παραδείγματος έργου. Θα δημιουργήσουμε ένα Ανοιξη Υπηρεσία Ιστού βασισμένη σε MVC που φιλοξενείται σε ένα Tomcat 8 υπηρέτης.



Έχω αναπτύξει το έργο στο Eclipse, το οποίο μπορεί να εγκατασταθεί σύμφωνα με τις οδηγίες εδώ .

gulp concat και minify js

Μπορείτε να κατεβάσετε την τελευταία σταθερή έκδοση του Tomcat, Tomcat 8 εδώ .



Φυσικά, αυτές οι συγκεκριμένες πλατφόρμες δεν αποτελούν προϋπόθεση για το EhCache. μπορείτε πάντα να επιλέξετε το αγαπημένο σας IDE και διακομιστή.

Το EhCache Spring Annotations JAR είναι διαθέσιμο εδώ . Όπως μπορούμε να δούμε, υπάρχουν δύο JAR για κάθε έκδοση: ένα με εξαρτήσεις και ένα χωρίς. Αυτό με εξαρτήσεις περιλαμβάνει επίσης τα EhCache 2 και Spring 3, τα οποία απαιτούνται για να λειτουργούν οι σχολιασμοί EhCache. Είναι πιο εύκολο να το ρυθμίσετε αν το κατεβάσετε με εξαρτήσεις και το προσθέσετε στη διαδρομή μας.



Παράδειγμα μεικτού ακέραιου γραμμικού προγραμματισμού

Το EhCache Spring Annotations είναι επίσης συμβατό με το Spring 4, αν και πρέπει να διαμορφωθεί ξεχωριστά. Δεν είναι σαφές εάν το έργο θα υποστηρίξει το EhCache 3 στο εγγύς μέλλον. Για όσους χρησιμοποιούν, ή σκοπεύουν να χρησιμοποιήσουν, το EhCache 3, δεν συνιστάται η προσέγγιση σχολιασμού που αναφέρεται σε αυτό το άρθρο.

Τέλος, θα χρησιμοποιήσουμε το Maven για να διαχειριστούμε τα πάντα. Το Maven έρχεται προσυσκευασμένο με τις περισσότερες εγκαταστάσεις Eclipse, αλλά μπορεί επίσης να ληφθεί εδώ . Οι εξαρτήσεις Spring MVC και EhCache Spring Annotations μπορούν να προστεθούν αρκετά εύκολα, όπως φαίνεται παρακάτω σε αυτό το άρθρο.



Ρύθμιση έργου

Εάν δεν έχετε εγκαταστήσει ποτέ ένα έργο Spring, μπορεί επίσης να το βρείτε Η ανάρτηση του Stefan Varga σχετικά με το θέμα πληροφοριακός.

Για αυτήν την επίδειξη, θα δημιουργήσουμε ένα βασικό έργο χρησιμοποιώντας το Maven αρχέτυπο maven-archetype-webapp. Η συνολική δομή αρχείων θα έχει την εξής μορφή:



Αρχική δομή έργου Άνοιξη.

Δημιουργήστε έναν κατάλογο, src/main/java, με τρία πακέτα: com.toptal.blog, com.toptal.blog.cache, και com.toptal.blog.service. Η πηγή της εφαρμογής μας θα περιληφθεί σε αυτά τα πακέτα, όπως περιγράφεται παρακάτω.

Ας ορίσουμε ένα servlet Tomcat που ονομάζεται 'springrest' στο web.xml:

... springrest org.springframework.web.servlet.DispatcherServlet 1 springrest /*

Εκτός αν ορίζεται ρητώς διαφορετικά, ένα Spring MVC DispatcherServlet θα αναζητήσει ένα αρχείο διαμόρφωσης XML με το όνομα {servlet-name}-servlet.xml στον κατάλογο WEB-INF. Ας δημιουργήσουμε ένα αρχείο διαμόρφωσης που ονομάζεται springrest-servlet.xml. Για να ενεργοποιήσετε τις μεθόδους Επεξεργαστή διεργασίας Spring με σχολιασμό με @RequestMapping, ας προσθέσουμε απλώς σε αυτό το αρχείο. Επίσης, ας καθορίσουμε το βασικό πακέτο για την Άνοιξη για αυτόματη σάρωση και εγγραφή φασολιών προσθέτοντας. Το springrest-servlet.xml η διαμόρφωση γίνεται:

project.toptal.blog

Μια απλή υπηρεσία ιστού RESTful

Τώρα που το έργο μας έχει διαμορφωθεί σωστά, ας εφαρμόσουμε ένα απλό API «υπηρεσίας μηνυμάτων». Στο βασικό μας πακέτο, SpringRestControllerWithEhCache.java, θα προσθέσουμε @RestController @RequestMapping( '/' ) public class SpringRestControllerWithEhCache { @Autowired MessageService messageService; @RequestMapping( value = '/message/{id}', method = RequestMethod.GET ) public String getMessage( @PathVariable Integer id ) { String message = messageService.getMessage( id ); System.out.println( 'get message ['+message+'] at '+new Date() ); return message; } @RequestMapping( value = '/message/set/{id}/{message}', method = RequestMethod.POST ) public String setMessage( @PathVariable Integer id, @PathVariable String message ) { System.out.println( 'set message ['+message+'] at '+new Date() ); messageService.setMessage( id, message ); return message; } } , με μία μέθοδο GET για να λάβετε ένα μήνυμα με αναγνωριστικό και μία μέθοδο POST για να ορίσετε ένα μήνυμα με αναγνωριστικό:

MessageService

Θα ορίσουμε το com.toptal.blog.service τάξη σε HashMap. Θα έχει πρόσβαση σε μηνύματα που είναι αποθηκευμένα στο Σύστημα αρχείων (SOR). Σε μια εφαρμογή παραγωγής, το SOR θα ήταν κάτι σαν μια σχεσιακή βάση δεδομένων. Για απλότητα, θα χρησιμοποιήσουμε ένα @Service public class MessageService { private ConcurrentHashMap messages = new ConcurrentHashMap(); public String getMessage( Integer id ) { System.out.println( 'Getting data from SOR......' ); return messages.get( id ); } public void setMessage( Integer id, String message ){ messages.put( id, message ); } } :

Ρύθμιση διακομιστή web raspberry pi
http://localhost:8080/EhCacheExample/message/set/1/test_message

Τώρα, εάν εξαγάγουμε το έργο ως WAR και το αναπτύξουμε στο Tomcat, θα πρέπει να μπορούμε να ορίσουμε ένα μήνυμα, για παράδειγμα 'test_message', για το ID = 1, δημιουργώντας ένα αίτημα HTTP POST στο http://localhost:8080/EhCacheExample/message/1. Στη συνέχεια, θα πρέπει να μπορούμε να λάβουμε ξανά το 'test_message' με αίτημα HTTP GET στο pom.xml. χρησιμοποίησα Αυπνία ως βολικός πελάτης REST για να κάνω τη δοκιμή μου.

Συνδέστε τους εαρινούς σχολιασμούς EhCache

Τώρα ας δουλέψουμε το EhCache για εμάς. Χρειάζονται μόνο λίγα γρήγορα βήματα για να διαμορφώσουμε το έργο μας ώστε να λειτουργεί σωστά το EhCache.

Το EhCache Spring Annotations καθιστά το EhCache εύκολο και απρόσκοπτο να εφαρμοστεί στην εφαρμογή σας.

llc s corp vs c corp

Βήμα 1: Ενημερώστε τις εξαρτήσεις για να χρησιμοποιήσετε τους εαρινούς σχολιασμούς EhCache

Προσθέστε την εξάρτηση εαρινών σχολίων EhCache στο Maven's com.googlecode.ehcache-spring-annotations ehcache-spring-annotations 1.2.0 :

org.springframework.cache.ehcache.EhCacheManagerFactoryBean

Βήμα 2: Ρύθμιση προσαρμοσμένης διαχείρισης προσωρινής μνήμης

Η Spring διαθέτει έναν ενσωματωμένο διαχειριστή προσωρινής μνήμης EhCache, com.toptal.blog.cache.CustomCacheManager. Αυτό είναι κατάλληλο για τις περισσότερες καταστάσεις προσωρινής αποθήκευσης, αλλά έχω διαπιστώσει ότι ο ορισμός ενός προσαρμοσμένου διαχειριστή προσωρινής μνήμης είναι χρήσιμος, επειδή μου επιτρέπει τον έλεγχο της προσωρινής μνήμης είτε μέσω προγραμματισμού είτε με σχολιασμούς, χρησιμοποιώντας τον ίδιο διαχειριστή προσωρινής μνήμης. Αυτό το άρθρο επικεντρώνεται σε σχολιασμούς, αλλά ας προχωρήσουμε και ορίστε έναν προσαρμοσμένο διαχειριστή προσωρινής μνήμης, ώστε να είμαστε έτοιμοι σε περίπτωση που το χρειαζόμαστε. Εάν προτιμάτε να διατηρήσετε την προεπιλεγμένη διαχείριση προσωρινής μνήμης, μπορείτε να παραλείψετε αυτό το βήμα.

Θα ορίσουμε τη νέα τάξη σε public class CustomCacheManager extends net.sf.ehcache.CacheManager{ public CustomCacheManager(){ super(); } /* Add your own cache methods here. * * public void myCustomCacheMethod(){ * // your code here * } * */ } :

springrest-servlet.xml

Ενεργοποιήστε το ενημερώνοντας ... ... ως εξής:

ehcache.xml

Βήμα 3: Διαμορφώστε το EhCache

Τέλος, δημιουργήστε το αρχείο διαμόρφωσης EhCache src/main/resources στο classpath. Από προεπιλογή, το Eclipse θα περιλαμβάνει timeToLiveSeconds στο classpath και θα τοποθετήσουμε το αρχείο εδώ. Αυτό το αρχείο απαιτείται για να λειτουργεί σωστά το EhCache. Καθορίζει τα ονόματα προσωρινής μνήμης και ορισμένες ιδιότητες κάθε προσωρινής μνήμης, όπως το @Cacheable:

@Cacheable

Βήμα 4: Δοκιμάστε το Cache

Τώρα, με τα πάντα έτοιμα και έτοιμα για χρήση, η χρήση του EhCache πρέπει να είναι εύκολη και ευτυχισμένη δουλειά. Μπορούμε απλώς να προσθέσουμε getMessage στη μέθοδο ή την τάξη που θέλουμε να αποθηκεύσουμε στην κρυφή μνήμη. Για παράδειγμα, πρόσθεσα MessageService στο @Cacheable( cacheName = 'messageCache' ) public String getMessage( Integer id ) { System.out.println( 'Getting data from SOR......' ); return messages.get( id ); } μέθοδος στο http://localhost:8080/EhCacheExample/message/set/1/newMessage. Είναι τόσο εύκολο!

http://localhost:8080/EhCacheExample/message/1

Για να ελέγξουμε ότι η προσωρινή μνήμη λειτουργεί, μπορούμε να δημιουργήσουμε ένα μήνυμα για το ID = 1 εκδίδοντας ένα αίτημα HTTP POST στο timeToLiveSeconds και στη συνέχεια να λάβουμε το μήνυμα για ID = 1 πολλές φορές, με αιτήματα GET να set message [newMessage] at Sun Dec 06 23:55:39 MST 2015 get message [newMessage] at Sun Dec 06 23:55:42 MST 2015 Getting data from SOR...... get message [newMessage] at Sun Dec 06 23:55:47 MST 2015 get message [newMessage] at Sun Dec 06 23:55:49 MST 2015 get message [newMessage] at Sun Dec 06 23:55:54 MST 2015 Getting data from SOR...... . Όπως μπορείτε να δείτε στην έξοδο της κονσόλας παρακάτω, η υπηρεσία ιστού ζητά από τον SOR να λάβει το μήνυμα την πρώτη φορά που ζητάμε το μήνυμα, αλλά όχι για τα επόμενα δύο αιτήματα, επιστρέφοντας το προσωρινό μήνυμα. Επειδή ορίσαμε το @TriggersRemove για να είναι 10, η υπηρεσία ιστού καλεί το SOR για να λάβει ξανά το μήνυμα μετά από 10 δευτερόλεπτα:

setMessage

Ανανέωση της προσωρινής μνήμης

Τώρα, απολαμβάνουμε την ταχύτητα και την ευκολία που μας δίνει μια προσωρινή μνήμη και το EhCache είναι αρκετά ωραίο για να ανανεώνεται από μόνο του κάθε 10 δευτερόλεπτα. Τι γίνεται όμως αν θέλουμε να το ανανεώσουμε αμέσως μετά την ενημέρωση του SOR; Προσφορές εαρινών σχολιασμών EhCache getMessage για να αφαιρέσετε καθορισμένα κλειδιά από την προσωρινή μνήμη όταν καλείται η σχολιασμένη μέθοδος. Στο API υπηρεσίας μηνυμάτων μας, το προσωρινά αποθηκευμένο μήνυμα θα πρέπει να αφαιρεθεί από την προσωρινή μνήμη όταν @Cacheable( cacheName = 'messageCache', keyGenerator = @KeyGenerator ( // method name is not included in cache key to work with @TriggersRemove name = 'HashCodeCacheKeyGenerator', properties = @Property( name='includeMethod', value='false' ))) public String getMessage( Integer id ) { System.out.println( 'Getting data from SOR......' ); return messages.get( id ); } @TriggersRemove( cacheName = 'messageCache', keyGenerator = @KeyGenerator ( name = 'HashCodeCacheKeyGenerator', properties = @Property( name='includeMethod', value='false' ))) public void setMessage( @PartialCacheKey Integer id, String message ) { messages.put( id, message ); } λέγεται. Έτσι, την επόμενη φορά a @KeyGenerator το αίτημα εισέρχεται, η προσωρινή μνήμη θα πάρει μια νέα εγγραφή από το SOR:

setMessage

Μια γεννήτρια κλειδιών χρησιμοποιείται από τον διαχειριστή προσωρινής μνήμης για τη δημιουργία του κλειδιού προσωρινής αποθήκευσης. Μπορείτε να βρείτε μια λίστα προκαθορισμένων γεννητριών κλειδιών κρυφής μνήμης εδώ . Από προεπιλογή, getMessage καταναλώνει τόσο το όνομα της μεθόδου όσο και τις παραμέτρους που έχουν περάσει για τη δημιουργία του κλειδιού cache. Αλλά επειδή θέλουμε το includeMethod μέθοδος για τη δημιουργία του ίδιου κλειδιού με false και να διαγράψουμε την προσωρινή μνήμη που σχετίζεται με αυτό το κλειδί, πρέπει να χρησιμοποιήσουμε μόνο το αναγνωριστικό μηνύματος ως κλειδί και να εξαλείψουμε το όνομα της μεθόδου για τη δημιουργία κλειδιών. Επομένως, ορίζουμε τη γεννήτρια κλειδιών setMessage ακίνητο να είναι @PartialCacheKey και για τις δύο μεθόδους. Επίσης, αφού id έχει δύο επιχειρήματα, χρησιμοποιούμε το EhCache messageCache σχολιασμός στο HTTP POST: http://localhost:8080/EhCacheExample/message/set/1/newMessage1 HTTP GET:http://localhost:8080/EhCacheExample/message/1 HTTP POST: http://localhost:8080/EhCacheExample/message/set/1/newMessage2 HTTP GET:http://localhost:8080/EhCacheExample/message/1 παράμετρος για να καθορίσει ότι είναι η μόνη που πρέπει να χρησιμοποιείται από τη γεννήτρια κλειδιών. Τέλος, θυμηθείτε ότι διαμορφώσαμε μια ειδική προσωρινή μνήμη, set message [newMessage1] at Tue Dec 08 17:53:44 MST 2015 get message [newMessage1] at Tue Dec 08 17:53:47 MST 2015 Getting data from SOR...... set message [newMessage2] at Tue Dec 08 17:53:50 MST 2015 get message [newMessage2] at Tue Dec 08 17:53:53 MST 2015 Getting data from SOR...... , για αυτόν τον τύπο πόρου, οπότε χρησιμοποιώντας μόνο το αναγνωριστικό για το κλειδί δεν υπάρχει κίνδυνος διένεξης με άλλους τύπους πόρων.

πλαισίου πλήρους στοίβας node js

Τώρα, εάν κάνουμε πολλά αιτήματα HTTP για το μήνυμα με ID = 1, ως εξής:

|_+_|

Η κονσόλα θα δείξει:

συμπέρασμα

Η τελική δομή του έργου μοιάζει με αυτό:

Τελική δομή έργου.

Σε αυτό το παράδειγμα, δημιουργήσαμε για πρώτη φορά μια απλή εφαρμογή ιστού Spring MVC RESTful. Χωρίς να τροποποιήσουμε ούτε μια γραμμή του υπάρχοντος κωδικού εφαρμογής, ενσωματώσαμε έπειτα ομαλά το EhCache στην εφαρμογή χρησιμοποιώντας EhCache Spring Annotations. Έχουμε αποδείξει ότι το EhCache Spring Annotations είναι τόσο εύκολο στην εγκατάσταση (προσθέτοντας την εξάρτηση του Maven) όσο και κομψό στη χρήση (προσθέτοντας σχολιασμούς σε μεθόδους).

Περαιτέρω ανάγνωση

Μπορείτε να βρείτε την τεκμηρίωση EhCache εδώ και η τεκμηρίωση EhCache Spring Annotations είναι εδώ .

Επίσης, δείτε το δείγμα έργου που περιγράφεται σε αυτό το άρθρο GitHub .

Ένας οδηγός για το CloudKit: Τρόπος συγχρονισμού δεδομένων χρήστη σε συσκευές iOS

Κινητό

Ένας οδηγός για το CloudKit: Τρόπος συγχρονισμού δεδομένων χρήστη σε συσκευές iOS
Προσοχή στον άνεμο: Προβολές στην έκρηξη της Ανανεώσιμης Ενέργειας

Προσοχή στον άνεμο: Προβολές στην έκρηξη της Ανανεώσιμης Ενέργειας

Διαδικασίες Χρηματοδότησης

Δημοφιλείς Αναρτήσεις
Πώς να δημιουργήσετε μια εφαρμογή επεξεργασίας φυσικής γλώσσας
Πώς να δημιουργήσετε μια εφαρμογή επεξεργασίας φυσικής γλώσσας
Πρόβλεψη επενδυτικού κεφαλαίου 2017: Σημάδια κόπωσης
Πρόβλεψη επενδυτικού κεφαλαίου 2017: Σημάδια κόπωσης
Μια βαθιά ματιά στο JSON εναντίον XML, Μέρος 2: Τα δυνατά σημεία και οι αδυναμίες και των δύο
Μια βαθιά ματιά στο JSON εναντίον XML, Μέρος 2: Τα δυνατά σημεία και οι αδυναμίες και των δύο
Πώς να ποσοτικοποιήσετε αποτελεσματικά την αξία προϊόντος - Ένας οδηγός για τους διαχειριστές προϊόντων
Πώς να ποσοτικοποιήσετε αποτελεσματικά την αξία προϊόντος - Ένας οδηγός για τους διαχειριστές προϊόντων
Το μέλλον των ομάδων: Διαχείριση του συνδυασμένου εργατικού δυναμικού
Το μέλλον των ομάδων: Διαχείριση του συνδυασμένου εργατικού δυναμικού
 
Think Business - Πώς να αυξήσετε την αξία του σχεδιαστή σας
Think Business - Πώς να αυξήσετε την αξία του σχεδιαστή σας
Εργονομία για Ψηφιακούς Νομάδες: Εργασία στο δρόμο χωρίς να σκοτωθείτε
Εργονομία για Ψηφιακούς Νομάδες: Εργασία στο δρόμο χωρίς να σκοτωθείτε
Μια βαθιά κατάδυση στις επενδύσεις του Elon Musk: The Makings of a Billionaire
Μια βαθιά κατάδυση στις επενδύσεις του Elon Musk: The Makings of a Billionaire
Αρχιτεκτονικοί Αλγόριθμοι Βελτιστοποίησης με HorusLP
Αρχιτεκτονικοί Αλγόριθμοι Βελτιστοποίησης με HorusLP
Κοιτάζοντας τα αποτυχημένα IPO στην εποχή του μονόκερου
Κοιτάζοντας τα αποτυχημένα IPO στην εποχή του μονόκερου
Δημοφιλείς Αναρτήσεις
  • hack αναπλήρωσης πιστωτικής κάρτας
  • Παράδειγμα κόμβου js σε πραγματικό χρόνο
  • αρμοδιότητες του οικονομικού διευθυντή
  • πραγματικοί αριθμοί πιστωτικών καρτών ανθρώπων
  • μία από τις πιο σημαντικές έννοιες στο μάρκετινγκ είναι η ελαστικότητα της ζήτησης ως προς την τιμή, η οποία είναι η
  • ψηφιακό σχέδιο εναντίον γραφιστικής
Κατηγορίες
  • Κατανεμημένες Ομάδες
  • Τροποσ Ζωησ
  • Αλλα
  • Κερδοφορία & Αποδοτικότητα
  • © 2022 | Ολα Τα Δικαιώματα Διατηρούνται

    portaldacalheta.pt