Quel est exactement le Framework Spring pour?
J'entends beaucoup de choses sur Printemps, les gens disent tout sur le web que le Printemps est un bon cadre pour le développement web. Quel est exactement le Framework Spring pour?
- Je comprends que la question est très large, mais je pense que dans ce cas très précis, la question est très importante pour junion des développeurs qui sont souvent parlé de Printemps par des gens qui suppose qu'il est assez populaire qu'il n'y a même pas besoin de dire ce qu'il fait. Après tout, levez la main si vous n'avez jamais entendu parler d'Instagram et quel est son but est.... (confession: je n'ai jamais utilisé Insta)
- La Question a été posée il y a 10 ans, et à cette époque, le Printemps a été un peu plus petit que maintenant, avec tous ses sous-projets, tels que le Printemps de Démarrage, les Données du Printemps, Printemps de Repos, etc. Et en fait, c'est pourquoi il a été de plus près il y a un an, en raison de l'étendue de cette question. Au moment où j'ai demandé à cette question, je voulais juste comprendre DI et pourquoi elle est nécessaire.
Vous devez vous connecter pour publier un commentaire.
Fondamentalement Printemps est un cadre pour la injection de dépendance qui est un motif qui permet de construire très découplé de systèmes.
Le problème
Par exemple, supposons que vous avez besoin de la liste des utilisateurs du système et donc déclarer une interface appelée
UserLister
:Et peut-être une mise en œuvre de l'accès à une base de données pour obtenir tous les utilisateurs:
Dans votre point de vue, vous aurez besoin pour accéder à une instance (juste un exemple, rappelez-vous):
Noter que le code ci-dessus n'a pas initialisé la variable
userLister
. Que devons-nous faire? Si je instancier explicitement l'objet comme ceci:...Je l'avais quelques la vue avec mon implémentation de la classe que l'accès à la DB. Que faire si je veux passer de la DB de la mise en œuvre à l'autre qui obtient la liste des utilisateurs à partir d'un fichier délimité par des virgules (souvenez-vous, c'est un exemple)? Dans ce cas, je voudrais aller à mon nouveau code et de modifier la dernière ligne par:
Cela n'a aucun problème avec un petit programme comme ça, mais... Ce qui se passe dans un programme qui a des centaines de points de vue et un nombre similaire de classes d'affaires. L'entretien devient un cauchemar!
Printemps (Dependency Injection) approche
Ce Printemps n'est à fil les classes par le biais d'un fichier XML ou d'annotations, de cette manière, tous les objets sont instanciés et initialisé par le Printemps et injecté dans les bons endroits (Servlets, les Frameworks Web, les Entreprises des classes, DAOs, etc, etc, etc...).
Revenons à l'exemple de Printemps, nous avons juste besoin d'avoir une définition pour la
userLister
de terrain et de disposer d'un fichier XML comme ceci:ou, plus simplement, d'annoter les documents déposés à notre avis classe avec
@Inject
:De cette façon, lorsque la vue est créée il comme par magie aura un
UserLister
prêt à travailler.C'est génial! N'est-ce pas?
UserLister
interface? Il suffit de changer le XMLUserLister
de mise en œuvre de prêt? Au programme, un temps de se moquer de la mise en œuvre deUserLister
et de faciliter le développement de la vueIl y a quelques autres options pour l'Injection de Dépendances autour de là, ce qui à mon avis a fait le Printemps si célèbre en plus de sa simplicité, de l'élégance et de la stabilité, c'est que les gars de SpringSource a programmé de nombreux de nombreux objets Pojo qui aident à intégrer le Printemps avec de nombreux autres cadres communs sans être intrusif dans votre application. Aussi le Printemps a plusieurs sous-projets comme Spring MVC, Spring WebFlow, le Printemps de Sécurité et de nouveau une très longue liste de etc.
Espère que cette aide. De toute façon, je vous encourage à lire Martin Fowler article sur l'Injection de Dépendance et d'Inversion de Contrôle, car il le fait mieux que moi.
Après comprendre les bases de la prendre un coup d'oeil à Le Printemps De La Documentation, à mon avis c'estutilisé pour être le meilleur Printemps livre jamais.UserLister
objet ne sont utilisés qu'une fois. Alors oui, ici, c'est un choix de "changer une ligne dans un fichier XML ou modifier une ligne de code". Mais maintenant, imaginez dans une application plus large queUserLister
est utilisé dans plusieurs classes / packages. Maintenant, il est évident que vous préférez changer une ligne dans le XML que de trouver à chaque utilisation de la classe et de modifier l'instanciation (potentiellement une douzaine de classes)Printemps contient (comme Skaffman souligne à juste titre) un framework MVC. Pour expliquer en bref voici mes entrées.
Le printemps prend en charge la ségrégation de la couche de service, web couche et la couche de gestion, mais ce qu'il fait vraiment le meilleur est "injection" d'objets. Pour expliquer cela avec un exemple: considérons l'exemple ci-dessous:
Maintenant dans votre code, vous avez une classe appelée RoadTrip comme suit
Maintenant, chaque fois que vous voulez un exemple de Voyage; parfois, vous voudrez peut-être un SUV pour initialiser FourWheel ou parfois, vous pouvez Berline. Ça dépend vraiment de ce que vous vouliez en fonction de la situation spécifique.
Pour résoudre ce problème, vous voulez avoir un Modèle de Fabrique comme creational modèle. Une usine retourne l'instance de droite. Donc finalement, vous vous retrouverez avec beaucoup de colle de code juste pour instancier des objets correctement. Le printemps fait le travail de code colle le mieux sans qui colle le code. Vous déclarez les mappages XML et initialisé les objets automatiquement. Il fait aussi beaucoup à l'aide de singleton architecture pour les instances et les aide à optimiser l'utilisation de la mémoire.
C'est aussi appelée Inversion De Contrôle. D'autres cadres pour ce faire sont Google guice, Pico conteneur etc.
En dehors de cela, Spring est un framework de validation, un soutien important pour la couche DAO en collaboration avec JDBC, Hibernate, iBatis et (et beaucoup plus). Fournit un excellent contrôle de transaction de plus de transactions de base de données.
Il y a beaucoup plus à Ressort qui peut être lu de bons livres comme "Pro Printemps".
Url suivantes peuvent aider trop.
http://static.springframework.org/docs/Spring-MVC-step-by-step/
http://en.wikipedia.org/wiki/Spring_Framework
http://www.theserverside.com/tt/articles/article.tss?l=SpringFramework
Vieux jours, Printemps était une injection de dépendance cadre de travail uniquement comme (Guice, PicoContainer,...), mais maintenant il est une des solutions globales pour la construction vous Enterprise Application.
Le printemps de l'injection de dépendance, qui est bien sûr au cœur du printemps est toujours là (et vous pouvez passer en revue d'autres bonnes réponses ici), mais il y a plus de printemps ....
Printemps a maintenant beaucoup de projets, chacun avec certains sous-projets (http://spring.io/projects) . Lorsque quelqu'un parle de printemps, vous devez savoir ce projet pour le printemps il parle, est-il seulement le printemps de base, qui est connu comme framework spring, ou c'est un autre printemps projets.
Certains printemps projets qui vaut la peine de trop parler sont:
Si vous avez besoin de le spécifier fonction de votre demande, vous pouvez trouver qu'il ya trop:
lot de demande
Il y a aussi des petits projets, par exemple printemps-sociaux-facebook (http://projects.spring.io/spring-social-facebook/)
Vous pouvez utiliser le printemps pour le développement web, comme c'est la
Spring MVC
module qui fait partie de Framework Spring projet. Ou vous pouvez utiliser le printemps avec web d'un autre cadre de travail, comme struts2.Qu'est-ce que le Printemps pour? Je vais répondre à cette question prochainement, mais d'abord, nous allons prendre un autre regard sur l'exemple de victor hugo. Ce n'est pas un bon exemple car il n'a pas de justifier la nécessité d'un nouveau cadre.
Fait! Alors maintenant, même si vous avez des centaines ou des milliers de vues, vous juste besoin de changer une ligne de code, comme dans le Printemps approche XML.
Mais changer une ligne de code nécessite la recompilation par opposition à la modification du code XML que vous dites? Eh bien, mon pointilleux ami, utiliser Ant de script et de loin!
Alors, quel est le Printemps pour? C'est pour:
Pour en savoir plus: http://discuss.joelonsoftware.com/?joel.3.219431.12
UserLister
), mais que faire si il a besoin de plusieurs services, ce n'est pas partagée entre les différentsBaseView
's enfants? Il n'y a (heureusement) pas d'héritage multiple en Java.Très court résumé, je dirai que le Printemps est la "colle" dans votre application. Il est utilisé pour intégrer les différents cadres et de votre propre code.
Printemps est trois choses.
Le problème, c'est que le Printemps DI est vraiment bien pensé, les wrappers autour d'autres choses sont vraiment bien pensé que les choses que d'autres pensaient tout et de Printemps tout aussi bien l'enveloppe. Le Printemps des implémentations de la MVC et le REPOS, et tous les autres trucs n'est pas aussi bien fait (YMMV, à mon humble avis), mais il y a des exceptions (Spring Security est da bomb). Donc j'ai tendance à utiliser de Printemps pour les DI, et son cool wrappers, mais préfèrent d'autres trucs pour le Web (j'aime Tapisserie beaucoup), le REPOS (Jersey est vraiment robuste), etc.
Ce que vous voudrez probablement dans une application web avec Spring -
En plus, le Printemps est ÉNORME, donc il ya beaucoup d'autres choses que vous pourriez être intéressé par l'utilisation dans une application web comme le Printemps de l'AOP ou de source de Sécurité. Mais les quatre éléments mentionnés ci-dessus décrivent les composants communs de Printemps qui sont utilisés dans une application web.
Je vois deux parties:
Notez que vous pouvez parfaitement utiliser Spring dans une application web sans l'aide de Spring MVC. Je dirais que la plupart des applications web Java ce faire, tout en utilisant d'autres frameworks web comme Guichet, Struts, Couture, ...
Printemps est idéal pour le collage des instances de classes ensemble. Vous savez que votre Hibernate classes vont toujours besoin d'une source de données, le Printemps des fils ensemble (et a la mise en œuvre de la source de données trop).
Vos objets d'accès aux données aura toujours besoin d'Hibernate accès, le Printemps des fils de mise en veille prolongée sont classes dans votre DAOs pour vous.
En outre, le Printemps vous donne essentiellement solide configurations d'un tas de bibliothèques, et en ce que, vous donne des conseils en ce qui libs que vous devez utiliser.
Printemps est vraiment un outil formidable. (Je n'ai pas parler de Spring MVC, juste le cadre de base).
Accepté la réponse ne comporte pas les annotations utilisation depuis le Printemps introduit la prise en charge de diverses annotations pour la configuration.
Printemps (Dependency Injection) approche
Il y a un autre moyen de les câbler les classes côtés à l'aide d'un fichier XML: les annotations. Prenons l'exemple de la accepté de répondre et enregistrer le haricot directement sur la classe à l'aide de l'un des annotations
@Component
,@Service
,@Repository
ou@Configuration
:La déclaration ci-dessus est valable avec un petit bonus de n'avoir besoin d'aucune XML et l'utilisation du fichier de câblage avec une autre annotation
@Autowired
qui trouve une mise en œuvre et de l'injecter dans.Utiliser le
@Bean
annotation sur une méthode utilisée pour obtenir la fève de mise en œuvre de l'injection.@Bean
annotation sur le niveau de la classe. Doit être l'un des@Component
,@Service
,@Repository
etc. Reste est correct. Vous devriez peut-être aussi le point de sortir qui permettra à l'autowiring l'Interface de cette manière que s'il y a seulement 1 candidat la classe dans le classpath approprié pour l'injection, sinon Printemps erreur d'application.L'avantage est L'Injection de dépendance (DI). Il signifie l'externalisation de la tâche de création de l'objet.Laissez-moi vous expliquer avec un exemple.
Maintenant dans mon code j'ai une classe LunchDecide comme suit:
Dans la classe ci-dessus, en fonction de notre humeur, nous choisissons Buffet() ou en Plaqué(). Toutefois, ce système est étroitement couplé. Chaque fois que nous avons besoin d'un autre type d'Objet, nous avons besoin de modifier le code. Dans ce cas, en commentant une ligne ! Imagine qu'il y a 50 différentes classes utilisées par 50 personnes différentes. Ce serait un sacré gâchis. Dans ce cas, nous avons besoin de Découpler le système. Réécrivons la LunchDecide classe.
Avis qu'au lieu de créer un objet à l'aide de mots clés, nous avons passé la référence à un objet pour le Déjeuner, Type de paramètre à notre constructeur. Ici, la création d'un objet est une sous-traitance. Ce code peut être filaire, soit en utilisant un fichier de configuration Xml (héritage) ou Annotations Java (moderne). De toute façon, la décision sur le Type de l'objet serait créé serait fait au cours de l'exécution. Un objet est injecté par Xml dans notre code Notre Code dépend de Xml pour ce travail. Par conséquent, l'Injection de Dépendance (DI).
DI non seulement contribue à rendre notre système faiblement couplé, il simplifie l'écriture de tests Unitaires, puisqu'elle permet des dépendances se moque de lui. Dernier point mais non le moins, DI simplifie la Programmation Orientée Aspects (AOP), ce qui entraîne le découplage et l'augmentation de la modularité.
Notez également qu'au-dessus de DI est Constructeur d'Injection. DI peut être fait par Injection par Mutateur ainsi - de la même bonne vieille méthode de définition de l'encapsulation.
Le printemps est une bonne alternative à Les Enterprise JavaBeans (EJB) de la technologie. Il a également framework web et de services web dans le cadre de la composante.
Spring Framework help you with several things like, don't reinvent the wheel. you can connect very easily with some database just using Spring Data, or create schedule tasks like CronJob or Windows Task. amazing !
Printemps a commencé comme un assez simple injection de dépendance du système. Maintenant, il est énorme et a tout ce qu'il contient (à l'exception de la proverbiale évier de la cuisine).
Mais n'ayez pas peur, il est très modulaire, de sorte que vous pouvez utiliser simplement les morceaux que vous voulez.
Pour voir où tout a commencé à essayer:
http://www.amazon.com/Expert-One-Design-Development-Programmer/dp/0764543857/ref=sr_1_1?ie=UTF8&s=books&qid=1246374863&sr=1-1
Il peut être vieux, mais c'est un excellent livre.
Pour un autre bon livre, cette fois exclusivement consacré au Printemps, voir:
http://www.amazon.com/Professional-Java-Development-Spring-Framework/dp/0764574833/ref=sr_1_2?ie=UTF8&s=books&qid=1246374863&sr=1-2
Il fait aussi référence à des versions plus anciennes de Printemps, mais il est certainement la peine de regarder.
Printemps a été l'injection de dépendance dans le début, puis ajoutez le roi des wrappers pour presque tout (wrapper plus implémentations JPA etc).
Longue histoire ... la plupart des régions du Printemps préférez solutions XML (XML moteur de script ... brrrr), donc pour DI-je utiliser Guice
Bonne bibliothèque, mais avec la croissance de la depnedenciec, par exemple Printemps JDBC (peut-être un Java jdbc solution avec les vrais noms des paramètres) prendre de maven 4-5 suivant.
À l'aide de Spring MVC (fait partie du "big spring") pour le développement web ... c'est "à la demande" cadre, il y a la guerre sainte "demande vs composant" ... à Vous de
Framework Spring défi est bon pour le développement web plus spécifiques à l'api Rest.
À cause de cela est l'injection de dépendance et de l'intégration avec les autres modules comme printemps de sécurité, spring aop, framework mvc, microservices
Toute application que vous créez certainement vous avez besoin de sécurité.
Si vous êtes de construire un produit, d'entretien, alors vous aurez besoin d'un air de défi Aop concept.
Si l'application a beaucoup plus de charge, alors vous devez mettre en œuvre des microservices.
Le printemps est de donner à tous cette chose dans une plate-forme. Support avec de nombreux modules
Chose principale est que le printemps est open source et extensible,ont un crochet partout pour intégrer du code personnalisé dans le cycle de vie.
Printemps De Données est un projet qui permet une intégration avec votre projet.
Donc, tout ce dont vous avez besoin pour construire l'application a Printemps.
Dans le passé, j'ai pensé à propos de Spring framework à partir du point de vue purement technique.
Donné une certaine expérience de travail en équipe et le développement de l'entreprise Webapps - je dirais que le Printemps est pour d'accélérer le développement d'applications (applications web) par découplage ses éléments individuels (haricots). Un développement plus rapide le rend si populaire. Printemps permet de déplacer la responsabilité de la construction (câblage) l'application sur le framework Spring. Le Printemps du cadre de l'injection de dépendance est responsable de la connexion/le câblage des haricots dans une application de travail.
De cette façon, les développeurs peuvent se concentrer plus sur le développement de composants individuels (haricots) dès que les interfaces entre les haricots sont définis.
Test de cette application est facile -, l'accent est donné à personne de haricots. Ils peuvent facilement être découplés et se moque, de sorte que l'unité de test est rapide et efficace.
Printemps-cadre définit plusieurs spécialisé haricots comme @Contrôleur (@Restcontroller), @Référentiel, @Composante pour servir le web des fins de. Printemps avec Maven fournir une structure qui est intuitive pour les développeurs.
Le travail d'équipe est facile et rapide car il ya différents éléments sont séparés et peuvent être réutilisés.