Metadata-Version: 2.1
Name: pythonic-spring
Version: 0.0.1.5
Summary: A python-made framework which is like Spring in Java.
Author: Tianhao Zhang
Author-email: genji9071@gmail.com
License: MIT
Project-URL: Source, https://github.com/genji9071/pythonic-spring/
Project-URL: Tracker, https://github.com/genji9071/pythonic-spring/issues
Keywords: spring pythonic
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE

# pythonic-spring

用python实现spring特性, 已集成fastapi, 可以像springboot那样统一管理类的生成和调用, 相比较原先python通过在类声明外面整实例的情况, 防止了写代码时循环调用的风险, 也可以为java中比较常见的多态和继承在python中的实战化做基底

## 当前最新版本 0.0.1.3:

两个装饰器:

- Service: 装饰class, 根据spring.json自动生成bean, 并通过BeanFactory注册
- Autowired: 装饰__init__方法, 根据bean_modules和bean_ids自动注入注册的bean到类中

SpringApplication:构建即使用, 支持输入通配扫描代码并延迟import, 提供了bean_id和type两种找bean的方式

spring.json:扫描并反序列, 供BeanFactory读取

## 使用方法

### 安装pip包  

    pip install pythonic-spring

### 创建实例

    from pythonicspring import SpringApplication
    app = SpringApplication()

### 声明需要bean化的类, 使用类装饰器:Service

### 声明类内需要引用的bean, 在__init__方法上使用装饰器:Autowired

    from pythonicspring import Service
    from pythonicspring import Autowired
    @Service
    class ClassA:
    
        class_b: ClassB = None
        class_c: ClassC = None
        
        @Autowired(bean_modules={"class_b": ClassB}, bean_ids={"class_c": "ClassCCC"})
        def __init__(self):
            pass
            
        def foo(self):
            result = class_b.spam()
            pass

## 一个例子:

test/testApp.py



