Ich bin ein begeisterter Fan des Spring-Framework für Java (von Rod Johnson). Ich lerne Python und war gespannt auf Spring for Python. Ich würde die Ansichten der Gemeinschaft über den Vergleich von diese beiden Aromen von Spring hören. Wie gut passt es Python-Paradigmen etc.Wie vergleicht Spring für Python mit Spring für Java
Antwort
OFFENLEGUNG: Ich bin der Projektleiter für den Frühling Python, so dass Sie meine Meinung voreingenommen betrachten.
Ich finde, dass mehrere der von Spring Python bereitgestellten Optionen nützlich sind, einschließlich: aspect oriented programming, dependency injection, remoting, security, and easy database access.
Aspektorientierte Programmierung ist, wie man sagt, einfacher mit Python als Java zu implementieren. Aber Spring Python macht es einfach, vorhandenen Python-Modulen hinzuzufügen, ohne ihren Quellcode zu bearbeiten. Die anderen Lösungen erfordern Meta-Programmierung oder Änderung des ursprünglichen Quellcodes. Ich hatte bereits eine Person, die unsere Foren besucht und gefragt hat, wie man einen Interceptor zu einer PyGame-Anwendung hinzufügen kann, damit er unauffällig etwas Code "antippen" kann.
Viele Leute schnell assume "dependency injection" or "IoC" instantly means "XML configuration files". Nicht der Fall. Während wir eine XML-Konfiguration unterstützen, springen Sie direkt in die Verwendung von Python-Dekoratoren.
Ich kenne bereits eine Firma, die Spring Python als Schlüsselelement ihres Systems verwendet. Sie sind daran interessiert, Verbesserungen vorzunehmen, neue Funktionen hinzuzufügen und sie generell als Teil ihrer Lösung zu verwenden. Sie haben auch damit experimentiert, es in Jython laufen zu lassen, falls das Ihr Interesse weckt.
Am Ende des Tages, mein Vorschlag ist es, alle Funktionen zu untersuchen, und sehen, ob einige von ihnen Ihren Bedürfnissen entsprechen. Ob es sich dabei um unnötige Komplexität oder um Wertsteigerung handelt, kann nur von Ihnen bestimmt werden. Sie müssen nicht alles verwenden; nur was du brauchst. Um mehr Informationen über das, was verfügbar ist, zu erhalten, lade ich Sie ein, die Introduction to Spring Python, die ich auf der SpringOne Americas 2008 Konferenz vorgestellt.
Dependency-Injection-Frameworks sind nicht annähernd so nützlich in einer dynamisch typisierten Sprache. Siehe zum Beispiel die Präsentation Dependency Injection: Vitally important or totally irrelevant? In Java ist die Flexibilität, die von einem Framework zur Abhängigkeitsinjektion bereitgestellt wird, von entscheidender Bedeutung, während es in Python normalerweise zu unnötiger Komplexität führt.
Dies bedeutet nicht, dass die Prinzipien falsch sind. Sehen Sie dieses Beispiel, wie lose Kopplung zwischen den Klassen zu erreichen, indem einfach Idiome mit:
# 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 Jahre später ... :) Wie würden Sie geschachtelte Abhängigkeiten handhaben? A (b (c (d)))? Wie würden Sie mit unbekannter Anzahl von Abhängigkeiten umgehen, ohne noch einen weiteren Parameter im Konstruktor hinzuzufügen? – dakt
Gute Sachen. Ich habe Spring Java, Spring Dot Net und jetzt mit Spring Python verwendet. Python war schon immer ziemlich einfach für Programmierer zu verwenden; Ich denke, vor allem, weil es einfach zu schreiben ist. Ich fand Spring Dot Net etwas verwirrend, aber Spring Java und Python scheinen ähnlich zu sein. Ich bin mir sicher, dass sie ihre Unterschiede haben, aber zumindest bin ich nicht alle so verwirrt mit der Python-Implementierung von Spring.
- 1. Framework wie Spring Security für Java EE?
- 2. Wie vergleicht man Datumsangaben mit Spring Expression Language?
- 3. Strategie für viele DAOs in Spring Java
- 4. Benutzerdatenverschlüsselung für eine Java-Webanwendung (Spring/Jboss)
- 5. UICollectionView für Spring wie Ordner
- 6. Oracle-Datenquellenkonfiguration für Spring
- 7. Spring 4 Java Config für MultipartResolver für Servlet 3.0
- 8. Buchvorschlag für Spring framework
- 9. Spring DateTimeFormat Konfiguration für java.time
- 10. Wie erstellt man TestContext für Spring Test?
- 11. Wie konfiguriert man einen Spring InboundChannelAdapter für Spring XD?
- 12. Java, Spring: DAOs für DataAccessException mit Mockito testen
- 13. Überspringbare Ausnahmeklassen für Spring Batch mit Java-basierte Konfiguration
- 14. Building Spring-Beispiel für Flex mit Maven
- 15. SOAP mit Spring MVC, JAVA
- 16. Neues Relikt für Spring Boot
- 17. Java Spring Resttemplate Zeichenkodierung
- 18. Embedded Redis für Spring Boot
- 19. Spring - Factory-Methode für Pfad
- 20. spring-mvc + java + Nebenläufigkeit
- 21. Zeitzone für Spring @Scheduled bereitstellen?
- 22. Spring Framework Ersatz für FlowAction
- 23. Spring Security für RESTful Webservice
- 24. Spring Security-Ignorierpfad für Filter
- 25. Spring Boot mit Thymoleaf # lists.contains() vergleicht nicht gleiche Werte
- 26. Spring Cloud mit Konsul für hohe Verfügbarkeit
- 27. Spring: Inject URL für Klassenpfadressource
- 28. Namenskonvention für Spring-Anwendungskontext XML
- 29. Was ist das beste Online-Tutorial für Spring Python?
- 30. Java, Spring, JSP Codierung
Die Einführung in Spring Python Link ist gebrochen. Fordern Sie einen aktuellen Live-Link – gansub
https://www.slideshare.net/turnquist/intro-to-spring-python – gregturn
Nebenbei gibt es auch ein Buch => https://www.packtpub.com/application -Entwicklung/Frühling-Python-11 – gregturn