zoukankan      html  css  js  c++  java
  • 服务(Service)

    类似SpringBeanServiceflying中最重要的组成部分,是它负责完成所有可用的业务处理。服务可以是单例,也可以是每次创建新实例,通过配置标明。

    本框架都是以服务为中心建立的,建设服务、面向前端(如ajax)暴露服务、面向其他系统提供服务。

    服务的开发

    类似Spring,无需继承框架中的任何类或者实现任何接口。

    服务的注册

    类似Spring,提供两种注册方式

    ①使用注解,示例:

    @Service("UserService")

    public class UserService { doSomething }

    ②使用配置文件

    <service id="CategoryService" type="class">

    <target>com.flying.cms.service.CategoryService</target>

    </service>

     

    服务的参数

    虽然服务的参数可以不做任何处理,类似int age这样,但是我们还是建议加上Param注解,通过Param注解,可以处理一下事件:

    1、增加有效性说明,如requiredmaxmin

    2、增加远程调用的方便性(参考后续远程服务调用RMI等文章)

    3、便于前端(ajax等)的服务调用

     

    服务的运行过程

    服务的运行包括两部分,服务体和注解处理。一些业务仅通过注解既可以完成,如前面看到的Dao一样;一些业务需要通过一些列的注解完成或者服务体完成,如:

    @RemoveCache(tag="pas.Menu")

    @DaoCreate(entity="security.menu")

    public Data create(

    @Param(value="name", required=true)String name,

    @Param(value="url",required=true)String url,

    @Param(value="remarks",required=true)String remarks,

    @Param(value="perm_id",required=true)long perm_id,

    @Param(value="sort_id",required=true)long sort_id,

    @Param(value="parent_id",required=true)long parent_id) throws Exception {

    return null;

    }

    创建一个菜单对象,并删除缓存中的内容

    @Transaction

    public Data createWithPerms(

    @Param(value="name", required=true)String name,

    @Param(value="remarks",required=true)String remarks,

    @Param(value="perm_ids",required=true)long[] perm_ids) throws Exception {

    Data d = this.create(name, remarks);

    long role_id = d.getLong("role_id", 0);

    if(perm_ids != null)

    for(long perm_id: perm_ids) {

    this.addPermToRole(role_id, perm_id);

    }

    return new Data(Codes.CODE, Codes.SUCCESS);

    }

    在事务中,服务体执行一系列的动作

    运行原理

    系统在执行过程中,根据注解和服务体,生成一个责任链,一次从最外面的注解开始执行,直到最里层的服务体。通过注解协助服务完成业务处理工作,能够极大的提升代码服务和简化切面编程。

    当前系统中提供的注解包括:

    数据库操作相关的:DaoCreateDaoUpdateDaoRemoveDaoQueryTransaction

    缓存相关的:UseCacheRemoveCacheLevel2Cache

    日志相关的:DefaultServiceInvokeAnnotation,MethodLogger

    安全相关的:MethodAuthentication

    还可以开发任意定制的服务注解,详细参考后续注解相关文章。

    框架源码:https://github.com/hifong/flying

    Demo应用:https://github.com/hifong/pas

    技术QQ群:455852142

  • 相关阅读:
    checkbox美化
    JS 之简单计算器
    python实现简单用户认证和角色制授权
    搭建高性能web服务
    纯JS实现fadeIn 和fadeOut
    纯CSS实现气泡框
    javascript之对象(二)&& 继承问题
    JavaScript之对象(一)
    Web发展史
    [LeetCode 256] Paint House
  • 原文地址:https://www.cnblogs.com/hifong/p/5433074.html
Copyright © 2011-2022 走看看