手把手教你用springboot打造标准系统(一)

明确几个问题:

  • 什么是标准系统?

标准系统就是系统架构师初始系统,包括业务系统的所有基础集成技术,可以在这个系统上开发出任何应用系统。

  • 标准系统使用的技术和最终的目标

a、使用springboot2、mybites、redis、session共享、Shiro、quartz、JWT等技术,

b、集成MyBites,使用druid做数据链接池,支持多数据源;

c、集成session共享,支持系统集群;

d、集成Shiro权限管理系统;

e、采用RESTFul风格;

f、采用JWT完成用户认证授权;

g、使用quartz完成任务管理;

 

目标确定,开始我们的实际操练,本教程使用IDEA开发工具,其他工具原理相同;

首先,使用Spring Initialize创建一个项目,Idea在开发SpringBoot上非常方便,为我们几乎准备了傻瓜式的项目创建方式;
在sdk我们选择1.8,因为我们要用springboot2,这个版本已经放弃了低版本的sdk了。

点击“Next”,进入设定项目属性

输入“group和artifact。如果我们想将开发的项目单独发布到tomcat,在packaging处选择war。默认Jar就可以,毕竟springboot内置了tomcat。

点击“next”,进入依赖选择,我们可以在这里选择需要的包,Idea会自动给我们生成Maven文件,并下载相关的依赖包。

这里说明一下;
DevTools 是为了在开发过程中,不需要每次修改了代码后手段重启服务;
Lombok是一个可以优化代码的工具,不需要再写一堆的set、get方法了;
Web  就不用多说,因为我们要进行web应用开发;
MySQL 是我们这里将使用mysql数据库;
JDBC  是对数据库的基本操作

在后面的开发功能不同,我们还会加入其他的依赖;

点击“Next”,进入给项目取名字,Idea是以文件夹为单位的,这里一定要注意不要和其他项目使用相同的名称。

点击“next”,进入代码开发,很期待哦。。。

第一次进入代码编写界面,会提升你是否导入改变,如果你想手动控制,直接点左边的“Import Change”,如果想以后自动导入改变,就点击右边的“Enable Auto-Import”,这样如果你修改了pom.xml,Idea就会自动给你导入依赖改变。很赞。。

到这一步还不能进入代码开发,我们还需要进行一些配置;

首先在pom中加入druid包:

<!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.10</version>
</dependency>

然后把application.yml内容修改一下:

# Tomcat
server:
  tomcat:
    uri-encoding: UTF-8
    max-threads: 1000
    min-spare-threads: 30
  port: 8080
  connection-timeout: 5000
  servlet:
    context-path: /

spring:
  # 环境 dev|test|pro
  profiles:
    active: dev


# Mybatis配置
mybatis:
  mapperLocations: classpath:mapper/**/*.xml
  configLocation: classpath:mybatis.xml

第一部分是tomcat的配置,第二部分是springboot的配置文件;第三部分是mybites的配置

然后添加另外3个配置文件:

application-dev.yml是开发时使用的配置文件;
application-pro.yml是线上生产时使用的配置文件;
application-test.yml是系统测试时的配置文件;

分开的目的是为了项目在开发过程中不至于相互干扰。只需要在主配置文件上修改一下当前应用场景就能正常运行;

dev的配置文件代码如下:

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql://localhost:3306/adu_framework?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
    druid:
      initial-size: 10
      max-active: 100
      min-idle: 10
      max-wait: 60000
      pool-prepared-statements: true
      max-pool-prepared-statement-per-connection-size: 20
      time-between-eviction-runs-millis: 60000
      min-evictable-idle-time-millis: 300000
      validation-query: SELECT 1 FROM DUAL
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/*
        #login-username: admin
        #login-password: admin
      filter:
        stat:
          log-slow-sql: true
          slow-sql-millis: 1000
          merge-sql: true
        wall:
          config:
            multi-statement-allow: true

dev的配置目前只有数据库的配置。具体每一个配置可以百度查一下druid的相关介绍就明白了。注意druid控制台登陆用户名和密码,生产环境最好设置复杂一点,以免被黑客攻破。建议生产环境也修改一下url-pattern的路径。

线上生产环境和测试环境配置文件可以参考这个文件。

接下来创建标准系统的类包目录:

common:公众类包
config:配置文件类包
modules: 是业务模块类,业务模块都放在这里,这样对于以后系统拆分有好处哦。
Mapper:目录是用于保存mapper.xml的文件。
 

接下来我们做几个测试类来看看系统是否搭建的没有问题。

重要的BaseDao里定义了所有的dao的操作。这样只需要写dao层的xml就可以了。

package com.james.framework.modules.sys.dao;


import java.util.List;
import java.util.Map;

/**
 * 基础Dao(还需在XML文件里,有对应的SQL语句)
 *
 * @author james
 * @email james_web@126.com
 * @date 2018年04月04日 下午2:28:33
 */
public interface BaseDao<T> {
    void save(T t);

    void save(Map<String, Object> map);

    void saveBatch(List<T> list);

    int update(T t);

    int update(Map<String, Object> map);

    int delete(Object id);

    int delete(Map<String, Object> map);

    int deleteBatch(Object[] id);

    T queryObject(Object id);

    List<T> queryList(Map<String, Object> map);

    List<T> queryList(Object id);

    int queryTotal(Map<String, Object> map);

    int queryTotal();
}

其他的类基本没什么代码,我们写一个TestController类来测试一下:

package com.james.framework.modules.sys.controller;

import com.james.framework.modules.sys.entity.SysUserEntity;
import com.james.framework.modules.sys.service.SysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
public class TestController {

    @Autowired
    SysUserService sysUserService;

    @RequestMapping("/test")
    public String test(){
        return "hello";
    }
    @GetMapping("/users")
    public List<SysUserEntity> list(){
        return this.sysUserService.list();
    }
    @DeleteMapping("/user/{id}")
    public String delete(@PathVariable("id") Integer userId ){
        return String.valueOf(this.sysUserService.delUser(userId));
    }
}

启动项目

点击IDEA右上角的三角形按钮;下方控制台没有任何错误提示说明系统启动完成;

在浏览器地址栏中输入:http://localhost:8080/users

页面显示了数据库里的信息。说明我们的标准系统第一步完成。

下一步目标加入多数据源的支持!~~  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值