文档章节

TangYuan使用教程-Spring整合

x
 xson_org
发布于 2016/12/15 21:49
字数 510
阅读 56
收藏 2

1. Spring中的整合配置

在Spring的配置文件中增加一下内容:

<!-- 初始化TangYuan -->
<bean id="tangyuan" class="org.xson.tangyuan.spring.InitBean" init-method="init" destroy-method="destroy" lazy-init="false">
	<property name="resource" value="tangyuan-configuration.xml" />
</bean>

<!-- 配置TangYuan的服务拦截 -->
<bean id="tangyuanAop" class="org.xson.tangyuan.spring.AopBean" lazy-init="false"/>
<aop:config>
    <aop:aspect id="tangyuanAspect" ref="tangyuanAop" order="0">
        <aop:pointcut id="service_pointcut" expression="execution(* org.xson.tangyuan.demo.service.*.*(..))" />
        <aop:before method="before" pointcut-ref="service_pointcut"/>
        <aop:after-returning method="after" pointcut-ref="service_pointcut"/>
        <aop:after-throwing method="onException" pointcut-ref="service_pointcut" throwing="e"/>
    </aop:aspect>
</aop:config>
  1. 说明
  • org.xson.tangyuan.spring.InitBean为Spring集成TangYuan的初始化Bean
  • org.xson.tangyuan.spring.AopBean为Spring服务方法添加SerivceContext的拦截器

2. 服务的编写和调用

tangyuan-sqlservices.xml

<?xml version="1.0" encoding="UTF-8"?>
<sqlservices xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:noNamespaceSchemaLocation="http://xson.org/tangyuan/sqlservices.xsd" ns="user">		

	<selectOne id="getUserById">
		SELECT * from user WHERE user_id = #{user_id}
	</selectOne>	

	<sql-service id="insertAndGet" txRef="tx_01" dsKey="ds">
		<insert rowCount="{nCount}" incrementKey="{user_id}">
			INSERT into user(user_name, user_age, create_time) VALUES(#{user_name}, #{user_age}, #{create_time|now()})
		</insert>
		<log message="插入一条用户数据: {user_name}, nCount: {nCount}, user_id: {user_id}"/>
		<selectSet resultKey="{users}">
			SELECT * from user
		</selectSet>
		<return>
			<property value="{users}"/>
		</return>
	</sql-service>
	
</sqlservices>

Spring中的服务和方法

1.通用服务

@Service("commonService")
public class CommonService {

	public <T> T execute(String serviceId, XCO request) {
		return ServiceActuator.execute(serviceId, request);
	}

}

2.具体服务

@Service("userService")
public class UserService {

	public XCO getUserById(XCO request) {
		return ServiceActuator.execute("user.getUserById", request);
	}

	public XCO insertAndGet(XCO request) {
		request.setDateTimeValue("create_time", new Date());
		return ServiceActuator.execute("user.insertAndGet", request);
	}
}

3. 单元测试

[@Test](https://my.oschina.net/azibug)
public void test01() {
	System.out.println("通过Spring中特定的服务调用");
	XCO request = new XCO();
	request.setLongValue("user_id", 1);
	Object result = userService.getUserById(request);
	System.out.println("result: \n" + result);
}

[@Test](https://my.oschina.net/azibug)
public void test02() {
	System.out.println("通过Spring中的通用服务调用");
	XCO request = new XCO();
	request.setLongValue("user_id", 1);
	Object result = commonService.execute("user.getUserById", request);
	System.out.println("result: \n" + result);
}

[@Test](https://my.oschina.net/azibug)
public void test03() {
	System.out.println("通过Spring中的特定服务调用");
	XCO request = new XCO();
	request.setStringValue("user_name", "张三");
	request.setIntegerValue("user_age", 18);
	Object result = commonService.execute("user.insertAndGet", request);
	System.out.println("result: \n" + result);
}

@Test
public void test04() {
	System.out.println("通过Spring中的通用服务调用");
	XCO request = new XCO();
	request.setStringValue("user_name", "张三");
	request.setIntegerValue("user_age", 18);
	Object result = commonService.execute("user.insertAndGet", request);
	System.out.println("result: \n" + result);
}

4. demo

下载地址: https://git.oschina.net/xsonorg/xsonorg-demo 其中SQL脚本位于src/main/resources/tangyuan_db.sql

到此,本文的内容就结束了,感兴趣的朋友可以关注TangYuan项目。

© 著作权归作者所有

下一篇: XCO-JS介绍
x
粉丝 22
博文 22
码字总数 34888
作品 5
海淀
私信 提问
Tangyuan介绍

tangyuan 1. 项目介绍 TangYuan是一个基于Java的持久层框架。提供的持久层框架包括SQL Maps和Data Access Objects(DAO) 2. 项目特性 数据源相关 支持多数据源,让读写分离,多数据库的应用...

xson_org
2016/11/23
174
1
tangyuan-web,tangyuan框架中的控制层组件

1. 项目介绍 tangyuan-web是tangyuan框架中的控制层组件,以组件化和插件化为思想,以XML配置为核心,无需或者只需极少的Java代码,即可完成控制层的开发。 tangyuan-web组件的优势: 开发简...

xson_org
2017/08/02
0
0
TangYuan使用教程-缓存

缓存 简介 tangyuan框架中本身提供了LocalCache的缓存功能,并整合了一些第三方缓存框架,包括encache、memcache和redis,我们只需要做一些简单的配置即可使用缓存功能;同时tangyuan框架还提...

xson_org
2016/12/17
355
0
TangYuan使用教程-XML介绍

TangYuan之XML介绍 1. Tangyuan中的XML文件 使用Tangyuan框架开发是通过配置和编写一系列的XML文来实现其功能,在开发过程中涉及的XML文件有如下四种: | 描述 | 示例文件名 | 允许数量 || :...

xson_org
2016/11/25
17
0
企业级分布式开发框架--TangYuan2

什么是TangYuan TangYuan是一款以服务为核心,基于组件化和插件化的企业级的分布式开发框架。 Tangyuan的特点 1.服务 服务是TangYuan的核心,TangYuan框架中支持多种类型的服务,包括SQL服务...

xson_org
2017/08/30
444
0

没有更多内容

加载失败,请刷新页面

加载更多

哪些情况下适合使用云服务器?

我们一直在说云服务器价格适中,具备弹性扩展机制,适合部署中小规模的网站或应用。那么云服务器到底适用于哪些情况呢?如果您需要经常原始计算能力,那么使用独立服务器就能满足需求,因为他...

云漫网络Ruan
今天
10
0
Java 中的 String 有没有长度限制

转载: https://juejin.im/post/5d53653f5188257315539f9a String是Java中很重要的一个数据类型,除了基本数据类型以外,String是被使用的最广泛的了,但是,关于String,其实还是有很多东西...

低至一折起
今天
23
0
OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
11
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
9
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部