TangYuan使用教程-Spring整合

原创
2016/12/15 21:49
阅读数 208

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项目。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
2 收藏
0
分享
返回顶部
顶部