Je travaille sur un projet où nous utilisons MULE et Spring. Dans le contexte, nous créons des beans qui fournissent les services. Tous les haricots sont essentiellement des singletons sans fil. Est-ce une façon populaire/recommandée d'écrire des services?Spring + Thread safe singletons
Répondre
Par défaut, un haricot au printemps sera un singleton et c'est un scénario très commun que vous décrivez.
Cela peut poser des problèmes de performance. Si vous avez plusieurs threads en compétition pour le même service. Le bean est défini comme un thread sécurisé, de sorte que l'accès à partir de différents threads serait efficacement sérialisé.
Ce n'est vraiment un problème que si vous faites des blocs synchronisés sur une sorte d'état partagé. Si vous ne verrouillez pas les accès simultanés, la différence de performances pour l'utilisation d'un singleton est négligeable. –
C'est le problème que j'aimerais explorer; AFAIK tente d'accéder à un singleton sera sérialisé. Le fait qu'il s'agisse d'un singleton threadless signifie qu'il n'est pas nécessaire de le verrouiller. Ainsi, comme bugspy.net suggère l'accès sera sérialisé. Sûrement c'est un inhibiteur de l'évolutivité? – user195166
Je ne suis pas sûr que l'accès à singleton est automatiquement sérialisé par Spring. Vérifie ça. Je pense que c'est la responsabilité du singleton de sérialiser et de verrouiller tout ce qui doit être verrouillé – GabiMe
Dans notre service RESTFul nous avons créé nos points d'entrée sur un
@com.sun.jersey.spi.resource.PerRequest
et
@org.springframework.context.annotation.Scope("request")
qui maintient notre débit jusqu'à mais nous surveillons de faire en sorte que GC est bon assez pour ne pas gonfler l'application.
Les singletons de printemps sont intrinsèquement thread-safe et c'est la portée par défaut - qui fonctionne assez bien car nous les utilisons dans toutes nos applications web.
Je suis assez nouveau au printemps alors s'il vous plaît ours avec moi .. Quand vous dites "Printemps singletons sont intrinsèquement thread-safe"; Ne dois-je pas encore écrire mon code dans le bean de manière sûre pour que cela soit vrai, c'est-à-dire que je ne devrais pas créer une nouvelle instance de variables au niveau du module car le prochain thread pourrait les utiliser? – user195166
Eh bien, si vous utilisez Spring pour son "injection de dépendance", alors vous ne vous souciez pas du cycle de vie, donc vous n'instanciez pas manuellement vos beans - c'est pourquoi vous avez Spring. Donc, fondamentalement, vous dites à Spring que la classe 'A' doit être injectée dans la classe' B' et Spring crée 'A' et' B' et "injecte" une instance de 'B' dans une instance de' A'. Par défaut, Spring crée des instances ** singleton ** des deux beans, mais vos classes doivent être intrinsèquement sûres, c'est-à-dire qu'elles doivent être sans état. Si vous devez conserver l'état, vous avez probablement besoin d'un prototype, d'une requête ou d'une étendue de session. –
Jetez un oeil à cela sur les portées http://static.springsource.org/spring/docs/2.5.x/reference/beans.html#beans-factory-scopes –
- 1. .NET DynamicMethod Thread Safe?
- 2. Thread-safe Form.Show
- 3. Lit/dev/urandom thread-safe?
- 4. Thread Safe Control - Crashing VS 2008
- 5. Variables de classe thread-safe Ruby
- 6. Pointeurs de fonctions thread-safe en C++
- 7. Java Transport.send() est-il thread-safe?
- 8. Conception de bibliothèque de classes Safe Thread
- 9. Paramètre thread-safe d'une variable (Java)?
- 10. invoquer thread-safe sur NET CF
- 11. Le StateMachine sur Windows WorkFlow Thread Safe?
- 12. Spring Security Child Thread Contexte
- 13. Comment Spring garde-t-elle les singletons, les prototypes ... sous le capot?
- 14. DbProviderFactory, DbConnection, DbCommand et DbDataAdapter sont-ils thread-safe?
- 15. Construction d'un objet C++ (MFC CRecordset) thread-safe
- 16. Est-ce que .NET a des classes génériques thread-safe?
- 17. Libération Objective-C de singletons
- 18. PHP et singletons à nouveau
- 19. Comment créer Throlling Thread en utilisant Spring Scheduler?
- 20. Un bon thread de Spring avec des exemples de TaskExecutor?
- 21. Est-ce que boost est shared_ptr <XX> thread-safe?
- 22. Shortest façon d'écrire une méthode d'accès thread-safe à une forme de fenêtres contrôle
- 23. Exécution d'une DLL non thread-safe dans un serveur HTTP multithread Windows
- 24. Mettre en œuvre la collecte thread-safe pour la liaison de données dans .NET
- 25. Je dois créer une variable statique Thread-safe en C# .Net
- 26. Quelle est la manière la plus sûre/appropriée d'implémenter un modèle singleton thread-safe?
- 27. Liste des types de données Delphi avec des opérations de lecture/écriture 'thread-safe'?
- 28. Comment puis-je effectuer un instantané thread-safe d'une carte de valeur-clé dans Java?
- 29. En quoi une transaction T-SQL n'est-elle pas thread-safe?
- 30. Java: Conception avec Singletons et génériques
J'ai trouvé une URL http://blog.webscale.co.in/?p=64 dit que l'injection de printemps n'est pas threadsafe! Contradiction!! Quelqu'un peut-il aider s'il vous plaît? –