Σε αυτό το παράδειγμα ας υποθέσουμε ότι έχουμε Projects που το κάθε ένα έχει πολλούς μηχανικούς. Πρόκειται για μία σχέση One to Many μεταξύ της οντότητας Project και της οντότητας Engineer. Παρακάτω θα δούμε πως μπορούμε εύκολα με Annotations να εκφράσουμε αυτή την σχέση σε Hibernate και Java.
Spring
Spring Framework 3.2 goes GA
Ενα χρόνο μετά απο το Spring 3.1 ο Juergen Hoeller ανακοίνωσε την έκδοση 3.2 στο blog της springsource
Κύρια χαρακτηριστηκά είναι
- Refined Java SE 7 support
- Concurrency refinements across the framework
- Allowing for @Autowired and @Value to be used as meta-annotations
- Support for custom @Bean definition annotations in @Configuration classes
- Asynchronous MVC processing on Servlet 3.0, with Spring MVC handler methods being able to return Callables and DeferredResults
- Inclusion of the formerly-standalone Spring MVC Test project, allowing for first-class testing of Spring MVC applications
- Support for loading WebApplicationContexts in the TestContext framework, and further improvements for web application testing
- Early support for JCache 0.5 (JSR-107) as a backend for Spring’s cache abstraction
Για περισσότερες λεπτομέρειες μπορείτε να δείτε το σχετικό άρθρο της springsource εδώ
Εγκατάσταση σε UBUNTU του Eclipse – Spring Tool Suite (STS)
Δε νομίζω ότι υπάρχει κάποιος από εμάς που να μην γνωρίζει για το Eclipse. Το συγκεκριμένο περιβάλλον ανάπτυξης ούτως ή άλλως δε χρειάζεται ιδιαίτερες συστάσεις. Οι γλώσσες προγραμματισμού που υποστηρίζει είναι πρακτικά απεριόριστες (χάρη σε αμέτρητα plugins που έχουν βγεί) ενώ τις δυνατότητες επεκτασιμότητάς του έχουν χρησιμοποιήσει διάφορες τεχνολογίες. Σε αυτό το πλαίσιο η Springsource δημιούργησε ένα ξεχωριστό περιβάλλον ανάπτυξης για όλη τη γκάμα των τεχνολογιών της, το Spring Tool Suite (STS), που κουμπώνει πάνω στο Eclipse.
Το STS το έχουμε δει και σε προηγούμενα άρθρα μας. Εδώ θα δούμε πώς εγκαθίσταται σε ένα περιβάλλον Ubuntu σε λίγα, απλά βήματα.
Continue reading “Εγκατάσταση σε UBUNTU του Eclipse – Spring Tool Suite (STS)”
Εγκατάσταση Apache Directory Server (ApacheDS) σε UBUNTU
Ο ApacheSD είναι μια ανερχόμενη δύναμη στους Directory Servers, είναι Java based και χρησημοποιεί το γνωστό framework Spring για την λειτουργεία του.
Η Εγκαταστασή του στο Ubuntu είναι αρκετά εύκολή υπόθεση.
Προαπαιτούμενα
Πρέπει να υπάρχει στο σύστημα Java έκδοση 5 ή μεγαλύτερη. Προτείνω την SUN-JAVA και ότι το OpenJDK
Για να το ελενξουμε αυτό δίνουμε
[bash]
java -version
[/bash]
και περιμένουμε να δούμε κάτι παρόμοιο με το παρακάτω
[text]
java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode)
[/text]
Αν λοιπον δεν είναι εγκατεστημένη τότε δίνουμε το παρακάτω στην κονσόλα
[bash]
sudo apt-get -y install maven2 sun-java6-jdk java-common
[/bash]
Continue reading “Εγκατάσταση Apache Directory Server (ApacheDS) σε UBUNTU”
How to reference Spring Beans from Everywhere!
Λοπόν, με αφορμή κάτι που με ταλαιπωρούσε γράφω τον παρακάτω οδηγό έτσι ώστε να δείξω πως μπορείς να καλέσεις ενα Spring Bean απο πρακτικά οπουδήποτε.
Ουσιαστικά έχουμε τις εξής περιπτώσεις περιπτώσεις για να καλέσουμε ένα bean
- Σε Spring non Web Application
- Σε Spring Web Application
- Μέσα απο κάποιον controller
- Μέσα σε κάποιο servlet
- Μέσα σε κάποιο implementation ή οποιαδήποτε άλλη Business Logic Class (aka μια απλή java class)
Θα τις πάρουμε λοιπόν μία-μία για να δούμε πως θα δουλέψουμε.
Πρώτα όμως θα φτιάξουμε ένα Bean το οποίο και θα καλούμε κάθε φορά μέσα στο κώδικά μας.
Το Spring Bean δεν είναι τίποτε άλλο απο ένα POJO (Plain Old Java Object) το οποίο με το που γίνεται initialize το Spring Context οι setters του “γεμίζουν” με ό,τι ορίζουμε εμείς στο context.xml (το κύριο xml που ορίζοντε όλοι οι παράμετροι του Spring, θα μπορούσε να λέγεται και διαφορετικά)
Στο παράδειγμά μας θα φτιάξω ένα Constants Bean το οποίο θα περιέχει πχ “σταθερές” που θέλω να χρησημοποιώ παντού και να τις ελέγχω απο το XML
Continue reading “How to reference Spring Beans from Everywhere!”
Spring Framework Series: Μερος 4ο – Spring Webflow
Φτάσαμε αισίως στο 4ο μέρος της σειράς μας για το Spring. Στο προηγούμενο κομμάτι του αφιερώματος μας είδαμε την αρχιτεκτονική του Spring MVC και τις δυνατότητες που προσφέρει το framework στον προγραμματιστή για να υλοποιήσει μία εφαρμογή στηριζόμενη σε αυτό το J2EE pattern.
Σto σημερινό μας άρθρο θα δούμε μια εξελιγμένη μεθοδολογία που εισήγαγε η ομάδα του Spring που απλοποιεί τη διαδικασία κατασκευής εφαρμογών MVC ιδιαίτερα εκείνες που απαιτούν πολύπλοκες αλληλουχίες φορμών όπως για παράδειγμα ένας wizard, ένα shopping cart κτλ. Η τεχνική αυτή είναι το Spring Webflow.
1. ΕΙΣΑΓΩΓΗ
Φτάσαμε αισίως στο 4ο μέρος της σειράς μας για το Spring. Στο προηγούμενο κομμάτι του αφιερώματος μας είδαμε την αρχιτεκτονική του Spring MVC και τις δυνατότητες που προσφέρει το framework στον προγραμματιστή για να υλοποιήσει μία εφαρμογή στηριζόμενη σε αυτό το J2EE pattern.
Σto σημερινό μας άρθρο θα δούμε μια εξελιγμένη μεθοδολογία που εισήγαγε η ομάδα του Spring που απλοποιεί τη διαδικασία κατασκευής εφαρμογών MVC ιδιαίτερα εκείνες που απαιτούν πολύπλοκες αλληλουχίες φορμών όπως για παράδειγμα ένας wizard, ένα shopping cart κτλ. Η τεχνική αυτή είναι το Spring Webflow.
Continue reading “Spring Framework Series: Μερος 4ο – Spring Webflow”
Εκμηδενίστε το χρόνο υλοποίησης web εφαρμογών με το Spring Roo
Η υλοποίηση ενός Java project είναι μία δημιουργική διαδικασία που όμως όπως όλοι μας γνωρίζουμε αρκετές φορές εμπεριέχει κάποιες επαναλαμβανόμενες εργασίες που μειώνουν τον ρυθμό ανάπτυξης και συνήθως τείνουν να είναι κουραστικές για τον προγραμματιστή. Αυτό ακριβώς το θέμα έρχεται να επιλύσει μία πολύ δυναμική τεχνολογία, το Roo από την Springsource. Σκοπός του είναι να επιτρέψει στον developer να οικοδομήει υψηλής ποιότητας και υψηλής απόδοσης συστήματα σε λίγα μόνο λεπτά. Σε αυτό το άρθρο θα περιγράφεται αναλυτικά τι είναι αυτή η τεχνολογία και παράλληλα θα διαπιστώσουμε μαζί πώς μπορούμε να χτίσουμε μία πλήρως λειτουργική enterprise εφαρμογή σε λιγότερο απο ένα τέταρτο της ώρας.
1. ΕΙΣΑΓΩΓΗ
Spring Framework Series: Μερος 3ο
1. ΕΙΣΑΓΩΓΗ
Καλωσορίσατε στο 3ο μέρος της σειράς για το Spring Framework. Μέχρι τώρα είχαμε την ευκαιρία να δούμε τι είναι το Spring framework και πώς, πολύ γρήγορα, μπορούμε να στήσουμε ένα σημείο εκκίνησης για να κατασκευάσουμε μία web εφαρμογή βασισμένη στην πλατφόρμα αυτή. Πάμε τώρα να δούμε αναλυτικά τον τρόπο λειτουργίας του και τα επιμέρους κομμάτια μίας Spring MVC εφαρμογής.
ΕΤΟΙΜΟΙ; Φύγαμε!
Spring Framework Series: Μερος 2ο
ΕΙΣΑΓΩΓΗ
Στο 1ο μέρος αυτής της σειράς κάναμε μία γενική επισκόπηση του Spring Framework και είδαμε τα πλεονεκτήματα και τις δυνατοτητες που προσφέρει στον σύγχρονο J2EE developer (και όχι μονο). Ωραία η θεωρία, όμως χωρίς πρακτικό κομμάτι…. δεν πάιζει. Πάμε λοιπόν να δούμε στο 2o μέρος αυτής της σειράς πώς μπορούμε να στήσουμε ένα Project σε Spring μέσα σε ελάχιστο χρόνο.
J2EE και Aspect Oriented Programming
ΕΙΣΑΓΩΓΗ
Όπως οι περισσότεροι προγραμματιστές J2EE, έχω γαλουχηθει, στο μεγαλύτερο μέρος της καριέρας μου, και για πολλά χρόνια, στην ανάπτυξη συστημάτων λογισμικού με τη χρήση τεχνικών αντικειμενοστραφούς προγραμματισμού (OOP). Η μέθοδος αυτή είναι η πλέον διαδεδομένη με κύριο χαρακτηριστικό τον κατακερματισμό ενός προβλήματος σε αντικείμενα που χαρακτηρίζονται από ιδιότητες (μέθοδους) και δεδομένα (μεταβλητές).
Παρά το γεγονός ότι ο OOP έχει μεγάλη επιτυχία στη διαμόρφωση και υλοποίηση πολύπλοκων συστημάτων λογισμικού, έχει και τα προβλήματά του. Η πρακτική εμπειρία με μεγάλα έργα έχει δείξει ότι οι προγραμματιστές ενδέχεται να αντιμετωπίσουν προβλήματα με τη διατήρηση του κώδικα τους, δεδομένου ότι όσο μεγαλύτερο το λογισμικό που υλοποιείται τόσο και πιο δύσκολος γίνεται ο ξεκάθαρος διαχωρισμός του έργου σε ενότητες (αντικείμενα), πράγμα και το οποίο αποτελεί τη βάση του OOP. Για παράδειγμα, μια μικρή αλλαγή σε μία επαναχρησιμοποιούμενη ενότητα μπορεί τελικά να προκαλέσει πολλές αλλαγές σε άλλες, ανεξάρτητες, ενότητες του κώδικα.
Τέτοιου είδους προβλήματα και πολλές άλλες ανησυχίες έρχεται να επιλύσει μία διαφορετική τεχνική, ο πτυχοστρεφής ή κατά άλλους θεματοστρεφής προγραμματισμός (AOP). Πάμε να δούμε λοιπόν κάποια προκατάρκτικά στοιχέια για αυτόν.
Σημείωση: Προτείνω γενικά τον όρο πτυχοστρεφή γιατί εκφράζει καλύτερα την έννοια aspect στα ελληνικά ακόμη και σε λειτουργικό επίπεδο.