当前位置:  开发笔记 > 编程语言 > 正文

Python依赖注入框架

如何解决《Python依赖注入框架》经验,为你挑选了6个好方法。

对于Python,是否存在与Guice(http://code.google.com/p/google-guice)等效的框架?



1> gregturn..:

Spring Python是基于Java的Spring Framework和Spring Security的分支,针对Python.该项目目前包含以下功能:

控制反转(依赖注入) - 使用经典XML或python @Object装饰器(类似于Spring JavaConfig子项目)将事物连接在一起.虽然@Object格式与Guice风格(每个类中的集中布线与布线信息)不同,但它是连接python应用程序的有效方式.

面向方面编程 - 在事务,安全性和缓存等事物中,在横向编程范例(而不是垂直OOP继承)中应用拦截器.

DatabaseTemplate - 从数据库中读取需要打开游标,读取行和关闭游标以及异常处理程序的单调循环.使用此模板类,您只需要SQL查询和行处理函数.Spring Python完成剩下的工作.

数据库事务 - 使用事务包装多个数据库调用可能会使您的代码难以阅读.此模块提供了多种方法来定义事务,而不会使事情变得复杂

安全性 - 插件安全拦截器,用于锁定对方法的访问,同时利用身份验证和域授权.

远程处理 - 很容易将本地应用程序转换为分布式应用程序.如果您已经使用IoC容器构建了客户端和服务器部分,那么从本地到分布式只是一个配置更改.

示例 - 为了帮助演示Spring Python的各种功能,已经创建了一些示例应用程序:

PetClinic - Spring Framework的示例Web应用程序已经使用python web容器从头开始重建,包括:CherryPy.去看一下如何使用这个框架的例子.(注意:将来,其他python Web框架将添加到此列表中).

Spring Wiki - Wiki是存储和管理内容的强大方式,因此我们创建了一个简单的演示版!

Spring Bot - 使用Spring Python构建一个小型机器人来管理开源项目的IRC频道.


值得一提的是,SpringPython不支持Python 3,自2014年以来它没有看到过任何活动......

2> 小智..:

我喜欢这个简单而整洁的框架.

http://pypi.python.org/pypi/injector/

作为正式模式的依赖注入在Python中比在其他语言中没那么有用,主要是因为它支持关键字参数,可以轻松地模拟对象,以及它的动态特性.

也就是说,协助此过程的框架可以从较大的应用程序中移除大量的锅炉板.这就是Injector可以提供帮助的地方.它自动且可传递地提供关键字参数及其值.作为一个额外的好处,Injector通过使用Module来鼓励很好地划分代码.

虽然受到Guice的启发,但它并没有盲目地复制它的API.提供Pythonic API胜过忠诚.



3> Matthew Trev..:

我没有使用它,但Spring Python框架基于Spring并实现了Inversion of Control.

在Python项目中似乎也有一个Guice:snake-guice



4> 小智..:

作为monkeypatching的替代品,我喜欢DI.一个新兴的项目,如http://code.google.com/p/snake-guice/可能符合要求.

或者参见Dennis Kempin撰写的关于Python的Dependency Injection的博客文章(08年8月).



5> phss..:

pinject(https://github.com/google/pinject)是一个新的替代方案.它似乎由Google维护,并遵循与Guice(https://code.google.com/p/google-guice/)类似的模式,它是Java版本.


虽然pinject看起来很棒,但它已经多年没有维护了,拉请求增加了对Python 2.6和3.x的支持.

6> Bartosz Rada..:

除此之外:

    Zope组件架构

    pyContainer

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有