Soy un ávido admirador del framework Spring para Java (por Rod Johnson). Estoy aprendiendo Python y estaba entusiasmado de encontrar sobre Spring for Python. Me gustaría escuchar los puntos de vista de la comunidad sobre la comparación de estos dos sabores de Spring. Qué tan bien se ajusta a los paradigmas de Python, etc.¿Cómo se compara Spring para Python con Spring para Java?
Respuesta
DIVULGACIÓN: yo soy el líder del proyecto para la primavera de Python, por lo que se puede considerar mi opinión sesgada.
Encuentro que varias de las opciones proporcionadas por Spring Python son útiles, incluyendo: aspect oriented programming, dependency injection, remoting, security, and easy database access.
La programación orientada a aspectos es, como dicen, más fácil de implementar fuera del manguito con python que java. Pero Spring Python hace que sea bastante fácil de agregar a los módulos de python existentes sin editar su código fuente. Las otras soluciones requieren meta-programación o modificación del código fuente original. Ya he tenido una persona que visita nuestros foros y pregunta cómo agregar un interceptor a una aplicación PyGame, para que pueda "tocar" discretamente algún código.
Mucha gente rápidamente assume "dependency injection" or "IoC" instantly means "XML configuration files". No es el caso. Si bien admitimos una configuración XML, solo ingrese directamente en el uso de decoradores de Python.
Ya conozco una empresa que está utilizando Spring Python como una pieza clave de su sistema. Están interesados en hacer mejoras, agregar nuevas características y, en general, utilizarlo como parte de su solución. También han experimentado con ejecutarlo dentro de jython, en caso de que despierte su interés.
Al final del día, mi sugerencia es examinar todas las características y ver si alguna de ellas se adapta a sus necesidades. Si usted está agregando complejidad innecesaria o un valor succint solo puede ser determinado por usted. No tienes que usar todo; solo lo que necesitas Para obtener más información sobre lo que está disponible, lo invito a ver Introduction to Spring Python, que presenté en la conferencia SpringOne Americas 2008.
Los marcos de inyección de dependencias no son tan útiles en un lenguaje de tipado dinámico. Véase, por ejemplo, la presentación Dependency Injection: Vitally important or totally irrelevant?. En Java, la flexibilidad proporcionada por un marco de inyección de dependencias es vital, mientras que en Python generalmente resulta en una complejidad innecesaria.
Esto no significa que los principios sean incorrectos. Vea este ejemplo de cómo lograr la articulación flexible entre las clases mediante el uso de frases hechas sencillas:
# A concrete class implementing the greeting provider interface
class EnglishGreetingProvider(object):
def get_greeting(self, who):
return "Hello %s!" % who
# A class that takes a greeting provider factory as a parameter
class ConsoleGreeter(object):
def __init__(self, who, provider=EnglishGreetingProvider):
self.who = who
self.provider = provider()
def greet(self):
print(self.provider.get_greeting(self.who))
# Default wiring
greeter = ConsoleGreeter(who="World")
greeter.greet()
# Alternative implementation
class FrenchGreetingProvider(object):
def get_greeting(self, who):
return "Bonjour %s!" % who
greeter = ConsoleGreeter(who="World", provider=FrenchGreetingProvider)
greeter.greet()
6 años después ... :) ¿Cómo manejarías las dependencias anidadas a (b (c (d)))? ¿Cómo manejarías un número desconocido de dependencias sin agregar otro parámetro en el constructor? – dakt
Buenas cosas. He utilizado Spring Java, Spring Dot Net y ahora estoy comenzando con Spring Python. Python siempre ha sido muy fácil de usar para los programadores; Creo, especialmente porque es fácil de escribir. Creo que Spring Dot Net es un poco confuso, pero tanto Spring Java como Python parecen ser similares. Estoy seguro de que tienen sus diferencias, pero hasta ahora, al menos, no estoy tan confundido con la implementación de Python de Spring.
- 1. Marco como Spring Security para Java EE?
- 2. ¿Cómo se integra con Spring ScalaTest
- 3. ¿Cómo se configura JPA con Spring 3?
- 4. Spring- Cómo usar Spring Dependency Injection para escribir una Aplicación Java independiente
- 5. Registrador recomendado para usar con Java, Hibernate y Spring
- 6. ¿Cómo se configura Spring ConversionService con java config?
- 7. ¿mejor forma para formas dinámicas con Spring?
- 8. ¿Se puede usar Spring-WS 1.5 con Spring 3?
- 9. ¿Puedo usar Spring Social con Spring Security?
- 10. Java Spring Bean con constructor privado
- 11. Cómo configurar Spring MandaMailSenderImpl para Gmail
- 12. ¿Cómo se configura Spring JavaMailSender para SES usando SMTP?
- 13. Configuración de transacción para el contexto configurado de Spring Java
- 14. ¿Se puede utilizar Spring Framework para aplicaciones por lotes?
- 15. Mongo repositorio para Spring Batch?
- 16. Recurso para aprender Spring MVC
- 17. Cómo inyectar ServletContext para pruebas JUnit con Spring?
- 18. ¿Se puede usar Jackson con Spring MVC 3.0 para vincular también RequestBody a Java Bean?
- 19. ¿Es Spring la opción correcta para mí?
- 20. Buscando un tutorial de OSGi con Spring (específicamente Spring MVC)
- 21. Problema con Spring FileUpload
- 22. ¿Cómo se compara Moose con el sistema OO de Python?
- 23. ¿Cómo se compara Python OOP con PHP OOP?
- 24. Inicializando Log4J con Spring?
- 25. ¿Cómo se usa programáticamente JdbcTemplate de Spring?
- 26. ¿Alguien usa Java-config para Spring framework ahora?
- 27. NoSuchMethodError con Spring MutableValues
- 28. ¿Para qué se utiliza el prototipo Spring Bean?
- 29. Integrar Spring con IntelliJ
- 30. Problemas con Spring Hibernate
el enlace Introducción a Spring Python está roto. Solicitar agregar un último enlace en vivo – gansub
https://www.slideshare.net/gturnquist/intro-to-spring-python – gregturn
Por cierto, también hay un libro => https://www.packtpub.com/application -development/spring-python-11 – gregturn