GithubHelp home page GithubHelp logo

xhigher / springboot-xserver Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 85 KB

基于springboot构建的微服务框架最佳实践,支持多数据源的数据库和缓存

Java 94.65% TSQL 5.35%
springboot fastjson mysql redis mongodb elasticsearch java

springboot-xserver's Introduction

springboot-xserver

基于springboot构建的微服务框架最佳实践,支持多数据源的数据库和缓存

简介

基于springboot构建的微服务框架,resful API风格,json数据格式交互,核心逻辑简洁易懂,定制灵活;mysql,redis,mongodb,elasticsearch等即开即用,资源管理完全托管。 业务逻辑层只需专注于业务流程实现,数据层无缝支持多数据源;打包部署简单,,方便本地测试和服务上线,通过MAVEN工具能够打出各个环境(根据指定配置文件)安装包;

接口层

//定义控制层
@RestController
@CrossOrigin(origins = "*")
@RequestMapping(value = "user")
public class UserController extends XController {


	//注入业务服务实例
    @Bean
    private XLogic info() {
    	return this.newLogic(Info.class);
    }
	
	//接口定义
    @RequestMapping(value = "info", method = RequestMethod.GET)
    public String getInfo(HttpServletRequest request) throws IOException {
        return executeLogic(Info.class, request);
    }
    
    //注入业务服务实例
    @Bean
    private XLogic update() {
    	return this.newLogic(Update.class);
    }

    //接口定义
    @RequestMapping(value = "update", method = RequestMethod.POST)
    public String updateInfo(HttpServletRequest request) throws IOException {
    	return executeLogic(Update.class, request);
    }
}

业务层

	//注解:接口版本(扩展同名接口),必要参数,限定ip等
	@XLogicConfig(requiredParameters={DataKey.USERID, DataKey.NICKNAME, DataKey.AVATAR})
	public final class Update extends XLogic {

	    @Override
	    protected boolean requireSession() {
	        return false;
	    }

	    private String userid;
		private String nickname;
	    private String avatar;

	    @Override
	    protected String prepare() {
	    	userid = this.getString(DataKey.USERID);
	        if (userid.length() != 12) {
	            return XLogicResult.errorParameter("USERID_ERROR");
	        }
	    	nickname = this.getString(DataKey.NICKNAME);
	        if (nickname.length() < 2 || nickname.length()>100) {
	            return XLogicResult.errorParameter("NICKNAME_ERROR");
	        }
	        avatar = this.getString(DataKey.AVATAR);
	        if (avatar.isEmpty()) {
	            return XLogicResult.errorParameter("AVATAR_ERROR");
	        }
	        return null;
	    }

		@Override
		protected String execute() {
			UserInfoModel userModel = new UserInfoModel();
			if(!userModel.updateInfo(userid, nickname, avatar)) {
				return XLogicResult.error();
			}
			return XLogicResult.success();
		}

	}

数据层

 	//数据库

	public abstract class BusinessDatabase extends XModel {

		//指定配置数据源
		public static final String dataSourceName = "business";
		
		@Override
		protected String getDataSourceName() {
			return dataSourceName;
		}
		
	}

 	//业务表
 	//继承指定数据源的基类
	public class UserInfoModel extends BusinessDatabase {

		//指定库表名称
		@Override
		protected String tableName() {
			return "user_info";
		}

		//通过账号名获取用户信息
		public JSONObject getInfoByUsername(String username){
			return this.prepare().addWhere("username",username).find();
		}

		//通过用户ID获取用户信息
		public JSONObject getInfo(String userid){
			return this.prepare().addWhere("userid",userid).find();
		}
		
		//更新用户信息
		public boolean updateInfo(String userid, String nickname, String avatar){
			Map<String, Object> values = new HashMap<String, Object>();
			values.put("nickname", nickname);
			values.put("avatar", avatar);
			values.put("updatetime", CommonUtils.getCurrentYMDHMS());
			return this.prepare().set(values).addWhere("userid", userid).update();
		}
	}

springboot-xserver's People

Contributors

xhigher avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.