tuscany,Tuscany简单应用

简单的例子:
配置文件:

代码:
@Test public void 测试组件调用() { // TODO 获取组件,并设用 SCADomain domain = SCADomain.newInstance("com/config/simple/echo.composite"); Echo echo= domain.getService(Echo.class, "echoComponent"); echo.print("我是神人"); } public class EchoImp implements Echo { public void print(String str) { System.out.println("str等于 "+str)
服务:
简单例子后,我们知道了,我们可以直接调用使用component的实现,而服务是启动域时或启动节点发布的;
此时我们进行服务的编写:
服务 - 屏蔽一些不常用的功能;

主要: interface ,binding,callback
1.interface :

对应的接口:
@Remotable
public interface Echo {
public void print(String str);
}
注意:服务中引用interface,必须要声明远程调用(@Remotable)
2.binging 绑定:
一.正常使用:
// 此处是接口名,当使用组件内部时,一定要这样做
代码方面:
1.接口要使用 : @Remotable
Tuscany简单应用tuscany
2.实现要使用 : @Service(Echo.class)
Tuscany简单应用tuscany
实现提供的多个服务:
@Service(interfaces={HelloService.class, AnotherInterface.class}) public class HelloServiceImpl implements HelloService, AnotherInterface{..}
3. reference 引用:
适用于一个组件引用其他组件处理;
XML : reference标签:
属性: 1.name (必须) – 变量名,必须与类的变量名相同
说明:
private EchoReture reture = null; // 两处名称必须相同;
2.promote (compusite层时必须) –指定相关的组件实现;
3.target(可选) – 被引用的组件名字 - 组件名/服务名,声明此属性,则是在同compusite调用;
子标签: 1.binding(选定) - 绑定调用的接口或服务,用于调用不再一个域内的服务;
2.interface(选定) - 引用接口,暂时只在回调时用到,其他用处不详
@Reference : 属性: name(可选的) — 注入变量名,默认为Java类的数据成员名;
required(可选的) — 是否必须注入服务。默认为true;

个人理解:相较与spring的IOC很相似;
如:<属性 名字="" ref=""/>
原理:本component内部声明一个引用,必然是引用另一个组件;
相关代码:


java代码:
@Service(Echo.class) public class EchoImp implements Echo { private EchoReture reture = null; @Reference(name="reture") // 重点:设置注入方法; public void setReture(EchoReture reture) { this.reture = reture; } public void print(String str) { System.out.println("str等于 "+str); } public void printString() { reture.getEcho(); } }

其他无用类省略…;

4.property 属性
一个属性可以是简单数据类型或XML可以通过代码实现或者注解;
name(必须)– 定义名字;
many (可选) – 是否多个值, 默认false;
mustSupply (可选) –是否必填,默认false;
source(可选) –引用其他属性 - 使用$XXX
简单例子: 注入字符串:
XML:
wang 123456

代码:
public class LogionAction_String { private String username = null; private String password = null; @Property(name="username") // 注入XML配置的值 public void setUsername(String username) { this.username = username; } @Property(name="password") // 注入XML配置的值 public void setPassword(String password) { this.password = password; } public User login() throws Exception { // TODO 判断输入是否正确,并返回用户对象 // 1.验证传递用户是否符合输入规范; // 2.记录登录人信息; // 3.创建用户对象,并赋值; // 4.返回对象; /* 1.0 判断用户是否为null */ if(username!=null&&password!=null) { /* 2.0 登录信息记录 */ System.out.println("用户 : "+username+" 密码 : "+password+" 成功登录"); /* 3.0 创建用户,赋值 */ User user = new User(); user.setUsername(username); user.setPassword(password); return user;/* 4.0 返回对象 */ } else throw new NullPointerException("username或password - 不存在"); } }
Tags:  tuscany

延伸阅读

最新评论

发表评论