Τι είναι το Spring Framework; - Διαδρομή για αποτελεσματική ανάπτυξη



Αυτό το ιστολόγιο για το What Is Spring Framework μιλά για το ευρέως χρησιμοποιούμενο Java Framework - Άνοιξη. Επίσης, λέει γιατί και πώς να χρησιμοποιήσετε το Spring Framework με παραδείγματα.

Στον σημερινό γρήγορο κόσμο, χρειαζόμαστε τα πάντα για να είμαστε γρήγοροι. Δεν θέλουμε να παραμείνουμε απασχολημένοι σε ένα έργο για πολύ καιρό, ας το κάνουμε σαν να ταξιδεύουμε, να ψωνίζουμε, να σπουδάζουμε ή να δουλεύουμε. Όσον αφορά την κωδικοποίηση, θέλουμε οι εφαρμογές μας να αναπτυχθούν στο συντομότερο χρονικό διάστημα, αλλά να παρέχουν πλήρη απόδοση. Μπορεί να βιαζόμαστε, αλλά ακόμα, δεν μπορούμε ούτε να συμβιβαστούμε με την ποιότητά μας ούτε θέλουμε να καταβάλουμε μεγάλη προσπάθεια σε αυτό. Ποια είναι λοιπόν η λύση; Τα πλαίσια λειτουργούν καλύτερα σε αυτήν την περίπτωση. Υπάρχουν διάφορα πλαίσια διαθέσιμα εκεί έξω στην αγορά, μεταξύ των οποίων λίγα χρησιμοποιούνται όπως: Spring, Hibernate, Struts κ.λπ. Μέσα από αυτό το blog ας μάθουμε τι είναι το Spring Framework και γιατί είναι τόσο δημοφιλές στην αγορά!

Πριν ξεκινήσετε, ας ρίξουμε μια ματιά στα θέματα που θα συζητήσω σε αυτό το ιστολόγιο:





Πλαίσια Java

Γιατί πρέπει να πάμε για Πλαίσια;Αςτο καταλάβετε με τον φίλο μας, Coddy .

πώς να τραβήξετε στιγμιότυπο οθόνης στο πρόγραμμα οδήγησης σεληνίου χρησιμοποιώντας το java

Coddy σε πρόβλημα - Τι είναι το Spring Framework - Edureka!



Coddy έχει δοθεί μια εργασία για την ανάπτυξη μιας εφαρμογής, αλλά ο καθορισμένος χρόνος δεν επαρκεί για την ολοκλήρωσή της. Πρέπει να γράψει πολλές γραμμές κώδικα (LOC) μόνος του. Είναι πολύ χρονοβόρα και κουραστική. Είναι μπερδεμένος τι πρέπει να κάνει! Από πού πρέπει να ξεκινήσει!

Coddy αρχίζει να σκέφτεται μια λύση στο πρόβλημά του. Χρειάζεται κάτι που είναι γρήγορο και αποτελεσματικό, εξοικονομεί χρόνο και προσπάθεια, όπως κάτι έτοιμο.



Ξαφνικά, η ιδέα της χρήσης του Frameworks τον χτυπά. Τα πλαίσια είναι γρήγορα, αποτελεσματικά και ελαφριά. Πρόκειται για μεγάλα σώματα προκαθορισμένων κωδικών που μπορούμε εύκολα να προσθέσουμε στον δικό μας κώδικα για να λύσουμε ένα συγκεκριμένο πρόβλημα.

Κωδικοποιεί χρησιμοποιώντας το Πλαίσιο. Παραδόξως ο κώδικας ταιριάζει εύκολα με το πλαίσιο.

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

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

Λοιπόν, ας ξεκινήσουμε τώρα με τα Java Frameworks.

Πώς τα Java Frameworks εμφανίστηκαν στην ύπαρξη;

Στα τέλη της δεκαετίας του 1990 οι εφαρμογές αναπτύχθηκαν ευρέως χρησιμοποιώντας τα πρότυπα JEE. Η προϋπόθεση του J2EE ήταν multi-platform / multi-vendor, εάν μπορείτε να κωδικοποιήσετε σύμφωνα με τα πρότυπα J2EE, μπορείτε να αναπτύξετε την εφαρμογή σας σε οποιονδήποτε διακομιστή εφαρμογών J2EE ανεξάρτητα από την πλατφόρμα. Η εκτέλεση του κωδικού σας σε οποιονδήποτε διακομιστή εφαρμογών σάς παρέχει πολλά οφέλη όπως - διαχείριση συναλλαγών, ανταλλαγή μηνυμάτων, αλληλογραφία, διεπαφή καταλόγου κ.λπ. Αλλά καθώς τίποτα δεν είναι εύκολο σε αυτόν τον κόσμο, η εργασία με το J2EE είχε επίσης κάποιες δυσκολίες.

  • ΠολύΣυγκρότημα : Το Enterprise Java Bean αναπτύχθηκε για τη μείωση της πολυπλοκότητας στις εφαρμογές J2EE. Αλλά δεν πέτυχε στον στόχο του στην εφαρμογή. Λόγος πίσω από αυτό είναι ότι, ενώ γράφετε ένα στοιχείο απαιτείται να γράψετε ένα σύνολο αρχείων XML, οικιακών διεπαφών, απομακρυσμένων / τοπικών διεπαφών κ.λπ.
  • Πρόβλημα «αναζήτησης»: Κάθε φορά που ένα συστατικό εξαρτάται από ένα άλλο συστατικό, έπρεπε να αναζητήσει τα εξαρτήματα στα οποία εξαρτάται από μόνη της. Αυτό το στοιχείο «αναζήτηση» συμβαίνει μόνο με το όνομα, επομένως το όνομα της εξάρτησης ήταν κωδικοποιημένο στο στοιχείο.
  • Βαρύς βάρος: ΣανΥποστηρίχθηκαν δυνατότητες όπως ομαδοποίηση, απομακρυσμένη, κ.λπ., πρέπει να τις διαμορφώσετε, ανεξάρτητα από το γεγονός ότι τις χρειάζεστε ή όχι. Αυτό θα κάνει τις εφαρμογές σας φουσκωμένες.

Έτσι δημιουργήθηκαν τα Java Frameworks. Τα Java Frameworks δεν είναι τίποτα άλλο από μεγάλα σώματα προκαθορισμένου κώδικα που μπορείτε να εφαρμόσετε στον δικό σας κώδικα για να λύσετε το πρόβλημά σας σε έναν συγκεκριμένο τομέα. Μπορείτε να χρησιμοποιήσετε ένα πλαίσιο καλώντας τις μεθόδους, την κληρονομιά του, παρέχοντας 'callbacks', ακροατές ή άλλες εφαρμογές του Παρατηρητής πρότυπο.

Ας το καταλάβουμε μέσα από μια εικονογραφική παράσταση:

Αλλά πώς ακριβώς μειώνουν τη δουλειά μας και κάνουν τους κωδικούς μας αποτελεσματικούς; Για να το καταλάβετε ακολουθήστε τα παρακάτω πλεονεκτήματακαιμειονεκτήματααυτών των πλαισίων. Ας ξεκινήσουμε με το πλεονεκτήματα .

Αποδοτικότητα:

Οι εργασίες που συνήθως σας χρειάζονται ώρες και εκατοντάδες γραμμές κώδικα για τη σύνταξη, μπορούν τώρα να γίνουν σε λίγα λεπτά με προ-ενσωματωμένες λειτουργίες. Η ανάπτυξη γίνεται πολύ πιο εύκολη, οπότε αν είναι πολύ πιο εύκολη, είναι πολύ πιο γρήγορη και, στη συνέχεια, πιο αποτελεσματική.

Ασφάλεια:

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

Δαπάνη:

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

Υποστήριξη:

Όπως οποιοδήποτε άλλο διανεμημένο εργαλείο, ένα πλαίσιο περιλαμβάνει γενικά έγγραφα, μια ομάδα υποστήριξης ή διαδικτυακά φόρουμ μεγάλης κοινότητας όπου μπορείτε να λάβετε γρήγορες απαντήσεις.

Παρά τα πλεονεκτήματα αυτά, τα Java Frameworks έχουν κάποια μειονεκτήματα , σαν:


Περιορισμοί:

Η θεμελιώδης συμπεριφορά του πλαισίου δεν μπορεί να αλλάξει, υποδεικνύοντας ότι όταν χρησιμοποιείτε ένα πλαίσιο, πρέπει να τηρείτε τους περιορισμούς του και να εργάζεστε με τον τρόπο που απαιτείται. Έτσι, πρέπει να διασφαλίσετε ότι επιλέγετε ένα πλαίσιο που ταιριάζει στις ανάγκες σας.

Ο κωδικός είναι δημόσιος:

Δεδομένου ότι το πλαίσιο είναι άμεσα διαθέσιμο σε όλους, iΠροσφέρεται επίσης σε άτομα με κακές προθέσεις. Μπορεί να μελετηθεί για να γνωρίζει πώς λειτουργούν τα πράγματα και να ανακαλύπτονται ελαττώματα που μπορούν να χρησιμοποιηθούν εναντίον σας.

Εθιμο Χαρακτηριστικά:

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

Τώραότιγνωρίζετε τα πλεονεκτήματα και τα μειονεκτήματατων πλαισίων,επιλέξτε το πλαίσιο σύμφωνα με τις ανάγκες σας. Υπάρχουν διάφορα είδη πλαισίων διαθέσιμα στην αγορά. Το παρακάτω διάγραμμα δείχνει μερικά από αυτά:

Έτσι, σε αυτό το blog θα επικεντρωθούμε στο Spring Framework.

Τι είναι το Spring Framework;

Εδώ τίθεται το ερώτημα «Τι είναι το Spring Framework»;

Το Spring Framework είναι ένα ισχυρό ελαφρύ πλαίσιο ανάπτυξης εφαρμογών που χρησιμοποιείται για το Enterprise Java (JEE).

Τα βασικά χαρακτηριστικά του Spring Framework μπορούν να χρησιμοποιηθούν για την ανάπτυξη οποιασδήποτε εφαρμογής Java.Μπορεί να περιγραφεί ωςπλήρες και αρθρωτό πλαίσιο. Το Spring Framework μπορεί να χρησιμοποιηθεί για όλες τις υλοποιήσεις επιπέδων μιας εφαρμογής σε πραγματικό χρόνο. Μπορεί επίσης να χρησιμοποιηθεί για την ανάπτυξη συγκεκριμένου επιπέδου εφαρμογής σε πραγματικό χρόνο, σε αντίθεση με το Struts και το Hibernate, αλλά με το Spring μπορούμε να αναπτύξουμε όλα τα επίπεδα.

Αυτό ήταν για το τι είναι το Spring Framework, αλλά πώς αναπτύχθηκε; Λοιπόν, υπάρχει μια ενδιαφέρουσα ιστορία πίσω από αυτό. Ας ρίξουμε μια ματιά στην ιστορία και την προέλευση του Spring Framework.

Τον Οκτώβριο του 2002, Ρον Τζόνσον , Αυστραλός ειδικός υπολογιστών, έγραψε ένα βιβλίο με τίτλο Expert One-on-One J2EE Design and Development. Σε αυτό το βιβλίο πρότεινε μια απλούστερη λύση βασισμένη σε συνηθισμένες τάξεις Java (POJO) και την έγχυση εξάρτησης. Έγραψε πάνω από 30.000 γραμμές κώδικα υποδομής που περιελάμβαναν έναν αριθμό επαναχρησιμοποιήσιμων διεπαφών java και κλάσεων για την ανάπτυξη της εφαρμογής. Γύρω στο Φεβρουάριο του 2003, ο Rod, ο Juergen και ο Yann άρχισαν να συνεργάζονται στο έργο Spring. Το όνομα 'Άνοιξη' δόθηκε καθώς σήμαινε μια νέα αρχή μετά το 'Χειμώνας' του παραδοσιακού J2EE.

Ακολουθεί το χρονοδιάγραμμα που εμφανίζεται για σημαντικές κυκλοφορίες στην ιστορία της Άνοιξης:

Ονομάστηκε Interface 21, ως αναφορά στον 21ο αιώνα και κυκλοφόρησε με άδεια Apache 2.0.
Αυτή ήταν η πρώτη κυκλοφορία ορόσημο. Το εαρινό πλαίσιο εξελίχθηκε γρήγορα από αυτήν την κυκλοφορία. Το Interface21 υποστήριξε το AspectJ παράλληλα με το Spring Framework.
Προστέθηκαν νέες δυνατότητες - επεκτάσιμες ρυθμίσεις XML, υποστήριξη για Java 5 και δυναμικές γλώσσες, σημεία επέκτασης IoC και βελτιώσεις AOP.
Προστέθηκαν νέες δυνατότητες - υποστήριξη για Java 6 / JEE5, διαμορφώσεις σχολιασμού, αυτόματη ανίχνευση στοιχείων στο classpath και συμβατά με OSGi.
Προστέθηκαν νέες δυνατότητες - υποστήριξη για αναδιοργανωμένο σύστημα λειτουργικών μονάδων, SpEL, JavaConfig, ενσωματωμένες βάσεις δεδομένων, υποστήριξη REST και υποστήριξη για Java EE 6.
Το Spring Data Commons Project κυκλοφόρησε. Αργότερα το 2012, ο Rod Johnson αποχώρησε από την ομάδα της Άνοιξης.
Όλα τα έργα της Άνοιξης μετατοπίστηκαν στο Pivotal. Προστέθηκαν νέες δυνατότητες - πλήρης υποστήριξη για Java 8, υποδοχές ιστού, υψηλότερες εξαρτήσεις βιβλιοθηκών τρίτων, groovy DSL για ορισμούς φασολιών.
Ήταν συμβατό με τα Java 6, 7 και 8, με έμφαση στις βασικές βελτιώσεις και τις σύγχρονες δυνατότητες ιστού.
Θα είναι η τελευταία γενιάεντός των γενικών απαιτήσεων συστήματος Spring 4. Το 4.3.8 είναι η τρέχουσα έκδοση.

Γιατί το εαρινό πλαίσιο;

Ακολουθεί ένα γράφημα που δείχνει τη σύγκριση μεταξύ της Άνοιξης και των διαφόρων άλλων Πλαισίων.

Ακολουθεί ένα γράφημα που βασίζεται σε μια έρευνα,από τον Μάιο του 2016. Όπως μπορείτε να δείτε από το γράφημα ότι το Spring Framework είναι πολύ δημοφιλές στον τομέα του και συνέχισε να διατηρεί τη θέση του στο tαπό το 2014.

Λόγοι για την άνοιξη πλαίσιοδημοτικότητα του έργου

Υπάρχουν γενικά τρεις κύριοι λόγοι για τη δημοτικότητα του Spring Framework.

  1. Απλότητα
  2. Μαρτυρία
  3. Χαλαρή σύζευξη

Ας συζητήσουμε αυτά τα θέματα λεπτομερώς.

Απλότητα: Το Spring Framework είναι απλό επειδή είναι μη επεμβατικό καθώς χρησιμοποιεί μοντέλα POJO και POJI.

  • POJO (Plain Old Java Objects): ΑΚλάση Java που δεν συνδυάζεται με καμία τεχνολογία ή οποιοδήποτε πλαίσιο καλείται ' POJO ' .
  • POJI (Plain Old Java Interfaces): Μια διεπαφή Java που δεν συνδυάζεται με καμία τεχνολογία ή οποιαδήποτε εργασία πλαισίου ονομάζεται ' POJI ' .

Μαρτυρία : Για τη σύνταξη του Sμπαμπούεφαρμογή, ο διακομιστής δεν είναι υποχρεωτικός. Αλλά για εφαρμογές struts και EJB, χρειάζεστε έναν διακομιστή, εάν θέλετε να δοκιμάσετε την εφαρμογή. Ίσως χρειαστεί πολλές αλλαγές στην πηγή και για να δείτε αυτές τις αλλαγές, κάθε φορά που πρέπει να κάνετε επανεκκίνηση του διακομιστή. Αυτό γίνεται κουραστικό και χρονοβόρο. Σε περίπτωση πουSpring Framework, έχει το δικό του κοντέινερ για την εκτέλεση της εφαρμογήςκατιόντα.

Χαλαρή σύζευξη : Το Spring Framework είναι χαλαρά συνδεδεμένο επειδή έχει έννοιες όπως Dependency Injection, AOP κ.λπ. Αυτά τα χαρακτηριστικά βοηθούν στη μείωση της εξάρτησης και στην αύξηση της αρθρωτότητας εντός του κώδικα. Ας το καταλάβουμε με ένα παράδειγμα.

Εδώ έχω μια διεπαφή Bike που έχει μια μέθοδο έναρξης (). Εφαρμόζεται περαιτέρω από τρεις κατηγορίες, συγκεκριμένα: Yamaha, Honda και Bajaj.

δημόσια διεπαφή Bike {public void start ()}

Εδώ ένα class Rider δημιουργεί ένα αντικείμενο οποιασδήποτε κλάσης που εφαρμόζει τη διεπαφή Bike.

class Rider {Bike b public void setBike (Bike b) {this.b = b} άκυρη διαδρομή () {b.start ()}}

Τώρα το δοχείο Spring Framework μπορεί να εισάγει ένα αντικείμενο οποιασδήποτε κλάσης που εφαρμόζει διεπαφή Bike, σύμφωνα με την απαίτηση. Έτσι λειτουργεί η χαλαρή ζεύξη.

Αρχιτεκτονική Πλαισίου Άνοιξης

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

  • Βασικό εμπορευματοκιβώτιο
  • Πρόσβαση / Ενσωμάτωση δεδομένων
  • Ιστός
  • AOP (Προγραμματισμός με γνώμονα την άποψη)
  • Ενοργάνιση
  • Δοκιμή.

Ίσως αναρωτιέστε, ποιο είναι το πλεονέκτημα του Spring Framework από την πολυεπίπεδη αρχιτεκτονική; Ας μάθουμε μέσα από τα ακόλουθα σημεία:

  • Το Spring Framework οργανώνει αποτελεσματικά τα αντικείμενα της μεσαίας βαθμίδας.
  • Ανεξάρτητα από το περιβάλλον χρόνου εκτέλεσης, οι υπηρεσίες διαχείρισης διαμόρφωσης του Spring Framework μπορούν να χρησιμοποιηθούν σε οποιοδήποτε αρχιτεκτονικό επίπεδο.
  • Το Spring Framework χειρίζεται τη διαμόρφωση με συνεπή τρόπο σε όλη την εφαρμογή. Αυτό εξαλείφει την ανάγκη χρήσης ποικίλων μορφών αρχείων προσαρμοσμένης ιδιοκτησίας.
  • Το Spring Framework έχει σχεδιαστεί με τέτοιο τρόπο ώστε οι εφαρμογές που δημιουργούνται με αυτό να εξαρτώνται από όσο το δυνατόν λιγότερα API.
  • Λόγω της χρήσης διεπαφών,Το Spring Framework διευκολύνει την ορθή πρακτική προγραμματισμού.

Για να κατανοήσουμε πλήρως τι είναι το Spring Framework, ας δούμε μια απλή εφαρμογή Spring Framework. Ακολουθήστε τα πέντε απλά βήματα:

Βήμα I: Δημιουργία της κατηγορίας Bean

πακέτο org.edureka.firstSpring δημόσια τάξη StudentBean {String name public String getName () {return name} public void setName (String name) {this.name = name} public void displayInfo () {System.out.println ('Hello: '+ όνομα)}}

Βήμα II: Δημιουργήστε ένα αρχείο XML

 

Βήμα III: Δημιουργήστε την κύρια τάξη

package org.edureka.firstSpring import org.springframework.context.ApplicationContext import org.springframework.context.support.ClassPathXmlApplicationContext δημόσια τάξη StudentDemo {public static void main (String [] args) {ApplicationContext appCon = new ClassPathX ) StudentBean factory = (StudentBean) appCon.getBean ('studentbean') factory.displayInfo ()}}

Βήμα IV: Τοποθετήστε τα αρχεία βάζων

Φορτώστε τα ακόλουθα αρχεία βάζων.

  • commons-logging-1.2.jar
  • javax.servlet-api-3.1.0.jar
  • jstl-1.2.jar
  • spring-aop-4.2.2.RELEASE.jar
  • ελατήριο-φασόλια-4.2.2.RELEASE.jar
  • spring-context-4.2.2.RELEASE.jar
  • ελατήριο-πυρήνας-4.2.2.RELEASE.jar
  • spring-express-4.2.2.RELEASE.jar
  • spring-web-4.2.2.RELEASE.jar
  • spring-webmvc-4.2.2.RELEASE.jar

ΣΗΜΕΙΩΣΗ: Σε περίπτωση που χρειάζεστε τα αρχεία βάζων, σχολιάστε παρακάτω.

Βήμα V: Εκτελέστε το πρόγραμμα

Εκτελέστε το πρόγραμμα στον διακομιστή σας για να ελέγξετε την εφαρμογή.

Ελπίζω να μπορέσω να εξηγήσω με σαφήνεια, τι είναι το Spring Framework, πώς ακριβώς λειτουργεί και για ποιο λόγο χρησιμοποιείται. Μπορείτε επίσης να ανατρέξετε στο βίντεο 'What Is Spring Framework', όπου ο εκπαιδευτής περιγράφει τα θέματα που συζητούνται σε αυτό το blog μαζί με πρακτική επίδειξη.

hashmap και hashtable σε java

Τι είναι το εαρινό πλαίσιο στην Java | Εκπαιδευτικό πλαίσιο Άνοιξης | Έντρεκα

Εάν ενδιαφέρεστε να μάθετε περισσότερα για το Spring Framework, τότε μείνετε συντονισμένοι σε αυτήν τη σειρά blog μου, επειδή θα έρθω με ένα άλλο blog στο που θα μιλήσει για πιο προηγμένες ιδέες την άνοιξη.

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

Έχετε μια ερώτηση για εμάς; Παρακαλώ αναφέρετέ το στην ενότητα σχολίων και θα επικοινωνήσουμε μαζί σας.