Golang的简单IOC框架 go-summer

Apache
Google Go
跨平台
2016-06-01
微默

Summer是一个Golang的简单的IOC框架。

实现了基本的依赖注入,配置文件属性注入等。

易扩展,简单。

简单的示例代码如下:

package main

import (
	"github.com/cocotyty/summer"
	"fmt"
)

func init() {
	summer.Toml(`
	[printer]
	prefix="[PRINT]"`)
	summer.Put(&A{})
	summer.Add("lay", &B{})
	summer.Put(&Cat{})
	summer.Put(&Printer{})
	summer.Start()
}

func main() {
	a := summer.GetStoneWithName("a").(*A)
	a.Call()
}

type A struct {
	// $ means you want to get a stone's field , it happened usually after stones inited
	BoyName string `sm:"$.lay.Name"`
	B       *B `sm:"lay"`
	// yes,we support interface ,tag is stone's name
	C       C `sm:"cat"`
}

func (a *A)Call() {
	a.C.Print()
	fmt.Println("hi ,I am A", "bodys name:", a.BoyName)
	fmt.Println(a.B)
}

type B struct {
	Name string
}

func (this *B)Init() {
	this.Name = "Boy!"
}

type C interface {
	Print()
}
type Printer struct {
	// if you already set the toml plugin config, you can use the #  ,to get value from toml,
	// # is toml plugin's name
	// toml plugin will work after directly dependency resolved,before init
	Prefix string `sm:"#.printer.prefix"`
}

func (printer *Printer)Print(str string) {
	fmt.Println(printer.Prefix + str)
}

type Cat struct {
	// * is mostly used tag,summer will find by the field's name  or the field's type or both
	Printer *Printer `sm:"*"`
}

func (c *Cat)Ready() {
	fmt.Println("my name is cat,i am ready.")
}
func (c *Cat)Print() {
	c.Printer.Print("Little Cat")
}
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

Summer has came

Summer is my favorite season . The one of the most important reason is lots of girl wear less than other season.and I like wearing half pants,T-shirt , and sandals or flep-flops...

2016/06/10 23:23
10
0
Best time to travel to France

Most of the region in France belongs to the oceanity temperate zone foliage forest climate, the southern is subtropical Mediterranean environment, the tourist seasons are very d...

2016/11/24 14:42
4
0
Python3学习笔记07-特殊方法与多范式、上下文管理器、对象的属性

到现在为止,Python学习已经可以告一段落。下面的部分,我想讨论Python的高级语法和底层实现。这一部分的内容并不是使用Python所必须的。但如果你想从事一些大型的Python开发(比如制作Pytho...

2016/06/10 01:13
35
0
Travel to France

France's land area is large, so it's not a single type of climate. The terrain is also unique affecting the climate in France. The average temperature in winter is 0℃-8℃; ave...

2016/11/24 14:47
2
0
2、(知识篇)枚举Enum的使用

public class Test { public static void main(String[] args) { // 第一种获取枚举值的方法 Season[] seasions = Season.values(); for (Season season : seasions) { System.out.println(s...

2016/10/31 21:32
6
0
Best time to travel to Germany

The best time to travel to Germany is summer and autumn. From early April until late October, especially in June as well as July, the European has high latitude, days are long i...

2016/11/23 14:43
1
0
When Towson native Ani

When Towson native Ani

2015/05/06 11:45
5
0
Golang使用标签表达式校验结构体字段的有效性

一、背景 在服务的API接口层面,我们常常需要验证参数的有效性。 Golang中,大部分参数校验场景实际上是先将数据Bind到结构体,然后校验其字段值。 一般地,校验结构体字段值有如下两种实现方...

03/25 14:12
769
0
eclipse下的GUI设计器WindowBuilder

WindowBuilder的使用:http://blog.csdn.net/ustc_summer/article/details/8466683 Eclipse4.2离线安装WindowBuilder:http://blog.csdn.net/ustc_summer/article/details/8466561 WindowBu...

2013/07/23 13:22
451
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部