私は、Spring Framework for Javaの熱心なファンです(Rod Johnsonによる)。 私はPythonを学習しており、Spring for Pythonを見つけたことに興奮していました。 私は、 のこれらの2つの春の比較に関するコミュニティの意見を聞くことに興味があります。それはPythonのパラダイムにどれくらいうまく収まるのですか。Python for PythonとSpring for Javaとの比較方法
答えて
開示:私は春のPythonのプロジェクトリードしていますので、あなたは私の意見に偏りを検討することができます。
私は、Spring Pythonによって提供されるいくつかのオプションが有用であることを発見しました:aspect oriented programming、dependency injection, remoting, security, and easy database access。
アスペクト指向プログラミングは、彼らが言うように、JavaよりもPythonで袖口を実装する方が簡単です。しかし、Spring Pythonは、ソースコードを編集することなく、既存のPythonモジュールに追加するのに十分簡単です。他のソリューションでは、メタプログラミングや元のソースコードの変更が必要です。私は既にPyGameアプリケーションにインターセプタを追加する方法を尋ねるフォーラムを1人の人が訪れたので、コードを邪魔にならずに「タップ」することができました。
すぐに多くの人々assume "dependency injection" or "IoC" instantly means "XML configuration files"。そうではありません。私たちはXML設定をサポートしていますが、Pythonデコレータを使用するだけで直接的に飛躍します。
私はすでに、Spring Pythonをシステムの重要な部分として使用している会社について知っています。彼らは改善を行い、新しい機能を追加し、一般的にはそれをソリューションの一部として使用することに興味があります。彼らはまた、あなたの興味をそそらせるために、ジャイモンの中で実行することを実験しました。
私の提案は、すべての機能を調べて、いずれかがあなたのニーズに合っているかどうかを確認することです。これが不必要な複雑さまたは補助剤の価値を追加するかどうかは、あなただけが決定することができます。すべてを使う必要はありません。あなたが必要とするものだけ。利用可能なものについてさらに詳しい情報を得るために、私はSpringOne Americas 2008カンファレンスで発表したIntroduction to Spring Pythonをご覧ください。
依存性注入フレームワークは、動的型指定言語とほとんど同じくらい有用ではありません。たとえば、プレゼンテーションを参照してくださいDependency Injection: Vitally important or totally irrelevant? Javaでは、依存性注入フレームワークによって提供される柔軟性は不可欠ですが、Pythonでは通常は不要な複雑さが生じます。
これは原則が間違っていることを意味するものではありません。シンプルなイディオムを使って、クラス間の疎結合を達成するためにどのようにこの例を参照してください:
# 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年後... :)ネストされた依存関係をどのように扱いますか(b(c(d)))? コンストラクタでさらに別のパラメータを追加しなければ、未知数の依存関係をどのように処理できますか? – dakt
良いもの。私はSpring Java、Spring Dot Netを使い、今はSpring Pythonから始めました。 Pythonは、プログラマにとって常に使いやすいものでした。特に書くのは簡単だからだと思います。私はSpring Dot Netがちょっと混乱していると感じましたが、Spring JavaとPythonの両方が似ているようです。彼らは違いがあると確信していますが、今のところ少なくとも私はPythonのSpring実装と混同しているわけではありません。
- 1. Python CSVファイルforループと日付比較
- 2. forループの結果をPythonで比較する方法
- 3. 2つの配列とPythonのForループを比較する
- 4. JavaScriptパフォーマンス:reduce()とforループの比較
- 5. Python GetChとForループ
- 6. Python __iter__とforループ
- 7. Python - forループとカウンタ
- 8. PDF生成ツールfor .NET(比較とエクスペリエンス)
- 9. "for" for Python
- 10. forループでの比較
- 11. Javascript for Automation(JXA)の比較(/) "
- 12. Python for Framework for sqlite
- 13. TCL for for PythonのようなPython
- 14. Python 'self' for function
- 15. for-loop in Python 3.0
- 16. JavaとPythonの文字列インデックスとの比較
- 17. OpenCV for ANDROID画像比較
- 18. Python forとifループ回数
- 19. python csvファイルとforループ
- 20. PythonリストItertoolsとForループ
- 21. Python辞書forとifループ
- 22. PythonリクエストとJson forループ
- 23. Pythonでbreak forループ
- 24. Pythonとファイルの比較を比較する
- 25. ESB for Python?
- 26. 辞書for forループのpython
- 27. foreachのforループとforループfor java
- 28. MD5のハッシングとPythonでの比較
- 29. タプルとPythonのintを比較する
- 30. iBATIS for Python?
Spring Python入門リンクが壊れています。最新のライブリンクを追加するリクエスト – gansub
https://www.slideshare.net/gturnquist/intro-to-spring-python – gregturn
ちなみに、書籍=> https://www.packtpub.com/application -development/spring-python-11 – gregturn