2.objot示例之注入

直接上代码了,假设我们有两个服务类都是继续Do(请参见“objot示例之容器”),分别是DoUser和DoBiz,在DoUser中需要引用到DoBiz,代码如下:
//DoUser.java文件
package objot.sample.service;

import objot.container.Inject;
/**
* 用户服务
* @author adun
*/
public class DoUser extends Do {
/**
* 被注入的DoBiz,需要添加@Inject标记
*/
@Inject
public DoBiz db;

public void operate() {
db.doSth();
}
}


//DoBiz.java文件
package objot.sample.service;
/**
* 业务处理服务
* @author adun
*/
public class DoBiz extends Do {
public void doSth() {
System.out.println("开始操作");
}
}


将这些服务加入到容器中后即可随意使用,代码如下:
//Sample.java
package objot.sample;

import java.lang.reflect.Method;

import objot.aspect.Aspect;
import objot.aspect.Weaver;
import objot.container.Bind;
import objot.container.Container;
import objot.container.Factory;
import objot.sample.service.Do;
import objot.sample.service.DoUser;
import objot.sample.service.Sign;
import objot.util.Class2;
import objot.util.Mod2;
/**
* 示例主程序
* @author adun
*/
public class Sample {
public static void main(String[] args) throws Exception {
//新建容器工厂
Factory factory = new Factory();
//将继承于Do所在包的所有类绑定到工厂
for(Class<?> c : Class2.packageClasses(Do.class)) {
//判断这些类必须为非abstract
if (!Mod2.match(c, Mod2.ABSTRACT) ) {
factory.bind(c);
}
}
//生成容器c,c的父容器为null
Container c = factory.create(null);

//开始从容器中得到一个DoUser的实例
DoUser du = c.get(DoUser.class);
du.operate();
}
}


运行结果:
开始操作

本例中主要展示了服务间相互引用的解决办法,更详细的关于@Inject的使用,请参见objot文档或源代码.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值