Injecteren

Snelle Python-afhankelijkheidsinjectie
Download nu

Injecteren Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • MIT/X Consortium Lic...
  • Prijs:
  • FREE
  • Naam uitgever:
  • Ivan Korobkov
  • Uitgever website:
  • http://code.google.com/u/Ivan.Korobkov/

Injecteren Tags


Injecteren Beschrijving

Snelle Python-afhankelijkheidsinjectie Injecteren is een snelle python-afhankelijkheid injectie-bibliotheek. Het maakt gebruik van decorateurs en descriptors om externe afhankelijkheden te verwijzen, en scopes (Guice-geïnspireerd) om te specificeren hoe u objecten opnieuw moet gebruiken. Afhankelijkheden kunnen worden verwezen door typen en optionele annotaties. Er is geen configuratie vereist, maar geavanceerde in-codeconfiguratie is mogelijk. Meestal Python-afhankelijkheid Injectie-tools, zoals PYContainer of Spring Python, zijn havens uit andere talen (Java). Ze zijn dus gebaseerd op afhankelijkheid injectie manieren specifiek voor statisch getypte talen, beschreven door Martin Fowler.Python is niet Java. Patronen en programmeertechnieken, die in één taal goed en bruikbaar lijken, kunnen ongemakkelijk in een ander zijn. Injecteerinstelling is gemaakt om een _pypythonic_ manier van afhankelijkheidsinjectie te verschaffen, met behulp van specifieke python-functionaliteit. Terminologie die wordt gebruikt in injecteren is opzettelijk gemaakt van Guy, maar de interne architectuur is anders. Uitbeelding: importeren inject@inject.appscopeclass config (object): passclass A (object): passclass b (object): passclass C (object): config = Inject.atttr ('config', config) a = inject.atttr ('a', a) @ Inject.param ('B', B): Def __init __ (Zelf, B): Self.b = BC = C () Hier zijn enkele belangrijke functies van "Inject": · Snel, slechts 2-3 keer langzamer dan directe instantiatie. · Normale manier van instantiëren van objecten, klasse (* args, ** kwargs). · Injecteren van argumenten in functies en methoden. · Verwijzingen van afhankelijkheden op typen en optionele annotaties. · Binden aan callablees, instanties en ongebonden methoden (zie Invokers). · Vraag van scope-middleware voor WSGI- en DJANGO-toepassingen (vereist Python2.5 +). · Helemaal geen configuratie. Geavanceerde flexibele configuratie mogelijk: · Injector. Bind (klasse, to = class2) · Injector.bind (database, annotatie = 'gebruiker', naar = gebruikersDatabase, scope = Appscope) · Injector.bind ('app_started_at', to = datetime.now ()) · Injector.bind ('SEY_VAR', to = class.unbound_method) Twee injectiemethoden, een descriptor en een decorator: klasse mijn (object): · Att = Inject.attr ('Att', Class2) @ Inject.param ('param', klasse2): DEF MYFUNC (PAMP): · doorgang Ondersteuning voor erfenis door injecteren injecteren.Super als de standaard KWARG-waarde: klasse mijn (object): · @ Inject.param ('Param1', Class1) Def __init __ (zelf, param1): · Zelf.param1 = param1 Klasse My2 (mijn): · @ Inject.param ('Param2', Class2) Def __init __ (zelf, param2, param1 = inject.super): · Super (My2, Self) .__ init __ (Param1 = Param1) · Zelf.param2 = param2 Invokers om ongebonden methoden (cool voor luisteraars) te bellen: klasse mijn (object): DEF GET_DATA (ZELF): · doorgang · Maak een Invoker, die een niet-gebonden methode oproept. · Invoker = Inject.invoker (My.get_Data) · Gegevens = Invoker () · Bind rechtstreeks aan een ongebonden methode. · @ Inject.param ('data', my.get_data) Def func (gegevens): · doorgang · Gedeeltelijke injecties, wanneer slechts enkele argumenten worden geïnjecteerd. · @ Inject.param ('Logger', Logger) DEF MYLOG (MSG, LOGGER): · doorgang · MyLog ('My Message') · Scopes: applicatie (Singleton), verzoek, noscoop. Klasse controller (object): · Session = Inject.Attr ('sessie', sessie, scope = reqscope) · Of in de configuratie · Injector.bind (sessie, to = sessie, scope = reqscope) · Of stel de standaardbereik in · @REQSCOPE Klasse sessie (object): · doorgang · @Appscope Klasse databasepool (object): · doorgang · Eenvoudige integratie in bestaande projecten. Vereisten: · Python


Injecteren Gerelateerde software