640 votes

Ressort pour, c’est quoi exactement ?

J’entends beaucoup parler de printemps, disent les gens partout dans le web que le printemps est un bon cadre pour le développement web. Mais quel est-il exactement pour ? Comment puis-je l’utiliser pour mon développement d’applications Web-Java ? des exemples ?.

729voto

victor hugo Points 16700

Fondamentalement Printemps est un cadre pour l' qui est un motif qui permet de construire très découplé de systèmes. Je vais essayer de vous expliquer le plus simple que je peux (ce n'est pas une réponse courte).

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:

public interface UserLister {
    List<User> getUsers();
}

Et peut-être une mise en œuvre de l'accès à une base de données pour obtenir tous les utilisateurs:

public class UserListerDB implements UserLister {
    public List<User> getUsers() {
        // DB access code here
    }
}

À votre avis, vous en aurez besoin pour accéder à une instance (juste un exemple, rappelez-vous):

public class SomeView {
    private UserLister userLister;

    public void render() {
        List<User> users = userLister.getUsers();
        view.render(users);
    }
}

Notez que le code ci-dessus n'a pas initialisé la variable userLister. Que devons-nous faire? Si je instancier explicitement l'objet comme ceci:

UserLister userLister = new UserListerDB();

...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:

UserLister userLister = new UserListerCommaSeparatedFile();

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 au fil de l'classes par l'aide d'un fichier XML, 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 un setter pour l' userLister domaine et ont un XML comme ceci:

<bean id="userLister" class="UserListerDB" />

<bean class="SomeView">
    <property name="userLister" ref="userLister" />
</bean>

De cette façon, lorsque la vue est créée comme par magie aura un UserLister prêt à travailler.

List<User> users = userLister.getUsers();  // This will actually work
                                           // without adding any line of code

C'est génial! N'est-ce pas?

  • Si vous souhaitez utiliser une autre application de votre UserLister interface? Il suffit de changer le XML
  • Ce si n'avez pas de UserLister de mise en œuvre de prêt? Au programme, un temps de se moquer de la mise en œuvre de l' UserLister et de faciliter le développement de la vue
  • Que faire si je ne veux pas utiliser de Printemps plus? Il suffit de ne pas l'utiliser! Votre application n'est pas couplé. L'Inversion de Contrôle des états: "Le contrôle de l'application du cadre de référence le cadre des contrôles de l'application".

Il 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érons 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 avoir compris les bases de prendre un coup d'oeil de Ressort de la Documentation, à mon avis, est le meilleur Printemps livre jamais.

65voto

Priyank Points 4753

Printemps contient (comme skaffman souligne à juste titre) un framework MVC. Pour expliquer en bref voici mes entrées. Le printemps prend en charge seggregation 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:

public interface FourWheel
{
   public void drive();
}

public class Sedan implements FourWheel
{
   public void drive()
   {
      //drive gracefully
   }
}

public class SUV implements FourWheel
{
   public void drive()
   {
      //Rule the rough terrain
   }
}

Maintenant, dans votre code, vous avez une classe appelée RoadTrip comme suit

public class RoadTrip
{
    private FourWheel myCarForTrip;
}

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.

Il est également appelé Inversion De Contrôle. D'autres cadres pour ce faire sont Google guice, Pico conteneur etc.

En dehors de ce Printemps a la validation cadre, un soutien important pour la couche DAO en collaboration avec JDBC, j'-batis et Hibernate (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 dans les livres comme Pro De 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

20voto

Johan Points 153

Très bref résumé, je dirai que le printemps est la « colle » dans votre application. Il est utilisé pour intégrer les différents cadres et votre propre code.

12voto

bpapa Points 10188

Ce que vous voudrez probablement dans une application web avec Spring -

  • Spring MVC, à 2,5+ permet l'utilisation de Pojo en tant que Contrôleur de classes, ce qui signifie que vous n'avez pas à s'étendre à partir d'un cadre particulier (comme dans Struts ou au Printemps pré-2.5). Les classes de contrôleur sont morts aussi simple de tester en partie grâce à l'injection de dépendance
  • Spring integration avec mise en veille prolongée, ce qui fait un bon travail de simplification de travail avec l'ORM solution (pour la plupart des cas)
  • À l'aide de Printemps pour une web app vous permet d'utiliser vos Objets de Domaine à tous les niveaux de la demande - les mêmes classes qui sont cartographiés à l'aide d'Hibernate sont les classes que vous utilisez en tant que "forme de haricots." Par nature, ce qui conduira à une plus robuste modèle de domaine, en partie parce qu'il va réduire le nombre de classes.
  • Printemps balises de formulaire rendre plus facile pour créer des formes sans trop de tracas.

En outre, 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.

9voto

stevedbrown Points 4656

Le 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).

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.

Le printemps est vraiment trop grande. (Je n'ai pas parler de Spring MVC, juste le cadre de base).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X