hehey-hcontainer 是一个python di 容器,提供依赖注入等等功能
Project description
hehey-hcontainer
介绍
hehey-hcontainer 是一个python di 容器,提供依赖注入等等功能
依赖以及版本要求
- python >= 3.5
安装
- 直接下载:
- 命令安装:
pip install hehey-hcontainer
基础文件以目录
参数配置
from hcontainer.base.Definition import Definition
beanConf = {
'class':'site.service.User.User', # 类路径
'_single': True, # 是否单例,默认是单例,
'_scope': 'app', # 对象作用域, app应用作用域,request 请求作用域
'_init': 'init', # 初始化方法, 对象创建后调用设置的方法(设置属性完成后调用)
'_args': [], # or True 构造方法参数,支持索引,关联数组
'_attr': [], # 类其他属性,直接注入
'attr1':'属性1',
'attr2':'属性2',
'attrBean':'<func::bean>',# 属性调用函数, 自动调用func函数(bean) 获取属性值,
'addresstBean':'<ref::address|天收你>',# 属性对应另一个bean(user),| 之后为bean 的参数
'attr3':Definition({
'_ref':'user' # attr3 为另一个bean为user的对象
})
}
基本示例
- 快速使用
from hcontainer.bean import BeanManager
components = {
# 构造器注入
'user':{
'clazz': 'site.service.User.User',
'_args':[
'hehe 小酌一杯'
],
},
# 属性注入
'address':{
'clazz':'site.service.Address.Address',
'realName':'hehe',
'user':'<ref::user>'
},
}
beanManager = BeanManager.make(components);
# 获取bean 实例
user = beanManager.getBean('user')
address = beanManager.getBean('address')
- 属性注入
from hcontainer.bean import BeanManager
class User:
def __init__(self,**attrs):
self.username = ''
if attrs:
#设置属性
pass
return ;
def getUsername(self):
return self.username
components = {
# 构造器注入
'user':{
'clazz': 'site.service.User.User',
'username':'hehe',
},
}
beanManager = BeanManager.make(components);
user = beanManager.getBean('user')
- 构造参数注入
# 示例1
class User:
def __init__(self,**attrs):
self.username = ''
if attrs:
#设置属性
pass
self._init();
return ;
def _init(self):
# 初始化操作
return;
def getUsername(self):
return self.username
# 此配置针对构造参数只有**attrs
components = {
# 构造器注入
'user':{
'clazz': 'site.service.User.User',
'_args':True,
'username':'hehe',
},
}
# 示例2
class Address:
def __init__(self,address='',city = ''):
self.addr = address
self.city = city
self._user = None;
@property
def user(self):
return self._user
components = {
# 构造器注入
'user':{
'clazz': 'site.service.User.User',
'_args':[
'我的收货详细地址',
'上海'
],
},
}
- bean 属性值为另一bean
from hcontainer.bean import BeanManager
class User:
def __init__(self):
self.username = ''
self.address = None;
return ;
def getAddress(self):
return self.address
class Address:
def __init__(self,address='',city = ''):
self.addr = address
self.city = city
def getAddr(self):
return self.addr
components = {
'user':{
'clazz': 'site.service.User.User',
'username':"hehe 小酌一杯",
'address':'<ref::address>'
},
# 属性注入
'address':{
'clazz':'site.service.Address.Address',
'address':'深圳',
'city':'上海',
}
}
beanManager = BeanManager.make(components);
user = beanManager.getBean('user')
address = user.getAddress()
address.getAddr()
- 初始化方法(对象创建后,自动调用指定的方法)
class User:
def __init__(self,**attrs):
self.username = ''
if attrs:
#设置属性
pass
self._init();
return ;
def _init(self):
# 初始化操作
print("初始化对象自动调用此方法!")
return;
def getUsername(self):
return self.username
components = {
# 构造器注入
'user':{
'clazz': 'site.service.User.User',
'_init':"_init",
'username':'hehe',
},
}
- 装饰器注解(id,ref)类为bean 对象
from hcontainer.bean import BeanManager
from hcontainer import bean
@bean.id("addrbean")
class Address:
def __init__(self,address=''):
self.addr = address
def getAddr(self):
return self.addr
@bean.id("userbean")
class User:
def __init__(self,username = 'nnnn'):
self.username = username
self.__address = None;
@property
@bean.ref('addrbean',name='__address')
def address(self):
return self.__address
def getName(self):
return self.username
beanManager = BeanManager.make();
user = beanManager.getBean('user')
- 创建新的bean 实例
from hcontainer.bean import BeanManager
components = {
# 构造器注入
'user':{
'clazz': 'site.service.User.User',
'_init':"_init",
'username':'hehe',
},
}
beanManager = BeanManager.make(components);
# 新对象,非单例
user = beanManager.makeBean('user')
- 根据类路径创建bean 对象
from hcontainer.bean import BeanManager
beanManager = BeanManager.make();
user = beanManager.getBean('site.service.User.User')
- bean 作用域
- 创建bean容器
from hcontainer.bean import BeanManager
beanManager = BeanManager.make();
requestContainer = beanManager.makeContainer('request')
sessionContainer = beanManager.makeContainer('session')
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
hehey-hcontainer-1.0.1.tar.gz
(14.2 kB
view hashes)