明确几个问题:
标准系统就是系统架构师初始系统,包括业务系统的所有基础集成技术,可以在这个系统上开发出任何应用系统。
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了。
输入“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包:
com.alibaba
druid-spring-boot-starter
1.1.10
然后把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 [email protected]
* @date 2018年04月04日 下午2:28:33
*/
public interface BaseDao {
void save(T t);
void save(Map map);
void saveBatch(List list);
int update(T t);
int update(Map map);
int delete(Object id);
int delete(Map map);
int deleteBatch(Object[] id);
T queryObject(Object id);
List queryList(Map map);
List queryList(Object id);
int queryTotal(Map 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 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
页面显示了数据库里的信息。说明我们的标准系统第一步完成。
下一步目标加入多数据源的支持!~~