Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
Springboot Plus
Commits
b13f4fed
Commit
b13f4fed
authored
Jun 07, 2019
by
xiandafu
Browse files
1.3.0
parent
002173af
Changes
26
Hide whitespace changes
Inline
Side-by-side
README.md
View file @
b13f4fed
[TOC]
# springboot-plus
一个基于SpringBoot 2 的管理后台系统,包含了用户管理,组织机构管理,角色管理,功能点管理,菜单管理,权限分配,数据权限分配,代码生成等功能
相比其他开源的后台
系统
,SpringBoot-Plus 具有一定的复杂度
相比其他开源的后台
开发平台脚手架
,SpringBoot-Plus 具有一定的复杂度
系统基于Spring Boot2.1技术,前端采用了Layui2.4。数据库以MySQL/Oracle/Postgres/SQLServer为实例,理论上是跨数据库平台.
基本技术栈来源于我为电子工业出版社编写的的
[
<<Spring Boot 2 精髓 >>
](
https://item.jd.com/12214143.html
)
(
这本书每一章也有各种例子,但Springboot-plus
更偏向于应用而不是教学)
该书的第二版电子版可以可以在
[
看云广场购买
](
https://www.kancloud.cn/xiandafu/springboot2-in-practice/
)
,第二版也包含一章说明Plus系统
当前版本:1.2.0
当前版本:1.3.0
技术交流群:219324263(满) 636321496
...
...
@@ -45,9 +50,10 @@ com.ibeetl.admin.CosonleApplication 是系统启动类,在admin-console包下,
还需要修改SpringBoot配置文件application.properties,修改你的数据库地址和访问用户
~~~
properties
spring.datasource.url
=
jdbc:mysql://127.0.0.1:3306/starter?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&useSSL=false
spring.datasource.username
=
root
spring.datasource.password
=
123456
spring.datasource.baseDataSource.url
=
jdbc:mysql://127.0.0.1:3306/starter?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&useSSL=false&useInformationSchema=true
spring.datasource.baseDataSource.username
=
root
spring.datasource.baseDataSource.password
=
123456
spring.datasource.baseDataSource.driver-class-name
=
com.mysql.cj.jdbc.Driver
~~~
...
...
@@ -201,7 +207,63 @@ SpringPlus-Boot 并非以菜单或者按钮来组织整个系统,而是以功
# 2 单体系统,系统拆分和微服务
plus是一个适合单体系统,系统拆分的java快速开发平台,也可以经过改造成微服务平台(以前做一个版本,但觉得plus应该聚焦系统核心,而不是简单堆砌功能,所以放弃了)
以下是单体系统,小系统,和微服务的区别
单体系统是一种常见系统设计方式,也是这十几年年来最主要的设计方式。单体系统的所有功能都在一个工程里,打成一个war包,部署。这样有如下明显好处
-
单体系统开发方式简单,我们从刚开始学习编程,就是完成的单体系统,开发人员只要集中精力开发当前工程
-
容易修改,如果需要修改任何功能,都非常方便,只需要修改一个工程范围的代码
-
测试简单,单体系统测试不需要考虑别的系统,避免本书下册要提到的各种REST,MQ调用
-
部署也很容易:不需要考虑跟别的系统关系,直接打war包部署到Web服务器即可
-
性能容易扩展,可以通过Nginx,把一个应用部署到多个服务器上。
随着业务发展,重构,单体系统越来越多,在开发一个庞大的单体系统的时候,就会有如下弊病
-
单体系统庞大,越来越难理解单体系统,微小的改动牵涉面广泛导致开发小组小心谨慎,开发速度会越来越慢。另外,启动一个庞大的单体系统,可能需要3分钟,或者更多时间
-
多个功能在同一个单体系统上开发,导致测试越来越慢,比如,测试必须排期,串行测试
-
单体系统如果想对技术进行更新换代,那代价非常大,如果是个小系统构成,则可以选取一个小系统先做尝试。单体大系统是几乎不可能做技术升级的
-
单体系统的所有功能运行在同一个JVM里,功能会互相影响,比如一个统计上传word文档的页码的功能由于非常消耗CPU,因此,会因为调用统计功能,导致整个系统短暂都不可用,出现假死的现象
因此,越来越多的架构师在设计系统的时候,会考虑系统拆分成多个单体小系统甚至是微服务。对于传统企业应用,拆成小系统更合适,对互联网系统,使用微服务个更合适,这是因为
-
传统IT系统本质上还是会用一个数据库,而微服务提倡的是一个服务一个数据库
-
传统IT系统很少需要调用其他模块服务。传统IT系统通过工作流来串联其他子系统。而电商类的微服务则是通过RPC等方式进行交互,是一个轻量级协议。传统IT系统也可以通过SOA,JMS跟其他系统(非子系统)交互,采用重量级协议
-
微服务对系统的基础设施要求很高,比如微服务治理,弹性库等等,只要电商系统才有人力物力去做这种事情,而传统IT系统,及时财大气粗,也暂时不具备微服务那样的IT基础设置
因此,对于大多数传统IT应用来说,单体拆分小系统在技术上没有风险,是一个可以立即实施的架构。如下是一个单体系统拆分后的物理架构

对于用户来说,访问不同的菜单功能,讲定位到不同得子系统,提供服务。
> plus支持多数据库
# 3 需要技术支持?
P
plus系统足够聚焦内核功能,简单易用功能强大。如果你需要技术支持,可以通过如下方式
*
加入qq技术交流群:219324263(满) 636321496
*
购买我的《
[
Spring Boot实战权威指南 基础篇》
](
https://www.kancloud.cn/xiandafu/springboot2-in-practice/
)
,从书里解答你的问题
*
ibeetl.com社区搜索你的问题
*
[
微信加入我的知识星球,与我一起探索Java技术,连接铁杆粉丝
](
https://wx.zsxq.com/dweb/#/index/824551244882
)
(
提供半商业技术支持
)
admin-console/bin/.gitignore
deleted
100644 → 0
View file @
002173af
/application.properties
/banner.txt
/beetl.properties
/btsql-ext.properties
/com/
/excelTemplates/
/sql/
/static/
/templates/
admin-console/src/main/java/com/ibeetl/admin/console/service/AuditConsoleService.java
View file @
b13f4fed
...
...
@@ -7,11 +7,11 @@ import org.springframework.transaction.annotation.Transactional;
import
com.ibeetl.admin.console.dao.AuditConsoleDao
;
import
com.ibeetl.admin.core.entity.CoreAudit
;
import
com.ibeetl.admin.core.service.BaseService
;
import
com.ibeetl.admin.core.service.
Core
BaseService
;
@Service
@Transactional
public
class
AuditConsoleService
extends
BaseService
<
CoreAudit
>
{
public
class
AuditConsoleService
extends
Core
BaseService
<
CoreAudit
>
{
@Autowired
AuditConsoleDao
auditConsoleDao
;
...
...
admin-console/src/main/java/com/ibeetl/admin/console/service/DictConsoleService.java
View file @
b13f4fed
...
...
@@ -15,7 +15,7 @@ import com.ibeetl.admin.console.dao.DictConsoleDao;
import
com.ibeetl.admin.console.web.dto.DictExcelImportData
;
import
com.ibeetl.admin.core.entity.CoreDict
;
import
com.ibeetl.admin.core.entity.CoreUser
;
import
com.ibeetl.admin.core.service.BaseService
;
import
com.ibeetl.admin.core.service.
Core
BaseService
;
import
com.ibeetl.admin.core.util.ExcelError
;
import
com.ibeetl.admin.core.util.PlatformException
;
...
...
@@ -25,7 +25,7 @@ import com.ibeetl.admin.core.util.PlatformException;
@Service
@Transactional
public
class
DictConsoleService
extends
BaseService
<
CoreDict
>{
public
class
DictConsoleService
extends
Core
BaseService
<
CoreDict
>
{
@Autowired
private
DictConsoleDao
dictDao
;
...
...
admin-console/src/main/java/com/ibeetl/admin/console/service/FunctionConsoleService.java
View file @
b13f4fed
...
...
@@ -16,12 +16,10 @@ import com.ibeetl.admin.core.dao.CoreMenuDao;
import
com.ibeetl.admin.core.dao.CoreRoleMenuDao
;
import
com.ibeetl.admin.core.entity.CoreFunction
;
import
com.ibeetl.admin.core.entity.CoreMenu
;
import
com.ibeetl.admin.core.entity.CoreOrg
;
import
com.ibeetl.admin.core.entity.CoreRoleFunction
;
import
com.ibeetl.admin.core.entity.CoreRoleMenu
;
import
com.ibeetl.admin.core.rbac.tree.FunctionItem
;
import
com.ibeetl.admin.core.rbac.tree.OrgItem
;
import
com.ibeetl.admin.core.service.BaseService
;
import
com.ibeetl.admin.core.service.CoreBaseService
;
import
com.ibeetl.admin.core.service.CorePlatformService
;
import
com.ibeetl.admin.core.util.PlatformException
;
/**
...
...
@@ -30,7 +28,7 @@ import com.ibeetl.admin.core.util.PlatformException;
*/
@Service
@Transactional
public
class
FunctionConsoleService
extends
BaseService
<
CoreFunction
>{
public
class
FunctionConsoleService
extends
Core
BaseService
<
CoreFunction
>
{
@Autowired
FunctionConsoleDao
functionDao
;
...
...
admin-console/src/main/java/com/ibeetl/admin/console/service/MenuConsoleService.java
View file @
b13f4fed
package
com.ibeetl.admin.console.service
;
import
com.ibeetl.admin.console.dao.MenuConsoleDao
;
import
com.ibeetl.admin.console.web.query.MenuQuery
;
import
com.ibeetl.admin.core.dao.CoreRoleMenuDao
;
import
com.ibeetl.admin.core.entity.CoreMenu
;
import
com.ibeetl.admin.core.rbac.tree.MenuItem
;
import
com.ibeetl.admin.core.service.BaseService
;
import
com.ibeetl.admin.core.service.
Core
BaseService
;
import
com.ibeetl.admin.core.service.CorePlatformService
;
import
com.ibeetl.admin.core.util.PlatformException
;
import
org.beetl.sql.core.engine.PageQuery
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.CacheEvict
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
...
...
@@ -20,7 +18,7 @@ import java.util.List;
@Service
@Transactional
public
class
MenuConsoleService
extends
BaseService
<
CoreMenu
>
{
public
class
MenuConsoleService
extends
Core
BaseService
<
CoreMenu
>
{
@Autowired
MenuConsoleDao
menuDao
;
...
...
admin-console/src/main/java/com/ibeetl/admin/console/service/OrgConsoleService.java
View file @
b13f4fed
...
...
@@ -12,7 +12,7 @@ import com.ibeetl.admin.console.dao.OrgConsoleDao;
import
com.ibeetl.admin.core.entity.CoreOrg
;
import
com.ibeetl.admin.core.entity.CoreUser
;
import
com.ibeetl.admin.core.rbac.tree.OrgItem
;
import
com.ibeetl.admin.core.service.BaseService
;
import
com.ibeetl.admin.core.service.
Core
BaseService
;
import
com.ibeetl.admin.core.service.CorePlatformService
;
import
com.ibeetl.admin.core.util.PlatformException
;
...
...
@@ -22,7 +22,7 @@ import com.ibeetl.admin.core.util.PlatformException;
*/
@Service
@Transactional
public
class
OrgConsoleService
extends
BaseService
<
CoreOrg
>
{
public
class
OrgConsoleService
extends
Core
BaseService
<
CoreOrg
>
{
@Autowired
private
OrgConsoleDao
orgDao
;
...
...
admin-console/src/main/java/com/ibeetl/admin/console/service/RoleConsoleService.java
View file @
b13f4fed
...
...
@@ -14,14 +14,14 @@ import com.ibeetl.admin.console.dao.RoleConsoleDao;
import
com.ibeetl.admin.core.entity.CoreRole
;
import
com.ibeetl.admin.core.entity.CoreUser
;
import
com.ibeetl.admin.core.rbac.tree.OrgItem
;
import
com.ibeetl.admin.core.service.BaseService
;
import
com.ibeetl.admin.core.service.
Core
BaseService
;
import
com.ibeetl.admin.core.service.CorePlatformService
;
import
com.ibeetl.admin.core.util.PlatformException
;
import
com.ibeetl.admin.core.util.enums.RoleTypeEnum
;
@Service
@Transactional
public
class
RoleConsoleService
extends
BaseService
<
CoreRole
>
{
public
class
RoleConsoleService
extends
Core
BaseService
<
CoreRole
>
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
RoleConsoleService
.
class
);
@Autowired
...
...
admin-console/src/main/java/com/ibeetl/admin/console/service/UserConsoleService.java
View file @
b13f4fed
...
...
@@ -22,7 +22,7 @@ import com.ibeetl.admin.core.entity.CoreUser;
import
com.ibeetl.admin.core.entity.CoreUserRole
;
import
com.ibeetl.admin.core.file.FileService
;
import
com.ibeetl.admin.core.rbac.tree.OrgItem
;
import
com.ibeetl.admin.core.service.BaseService
;
import
com.ibeetl.admin.core.service.
Core
BaseService
;
import
com.ibeetl.admin.core.service.CoreDictService
;
import
com.ibeetl.admin.core.service.CorePlatformService
;
import
com.ibeetl.admin.core.util.PlatformException
;
...
...
@@ -32,7 +32,7 @@ import com.ibeetl.admin.core.util.enums.GeneralStateEnum;
@Service
@Transactional
public
class
UserConsoleService
extends
BaseService
<
CoreUser
>
{
public
class
UserConsoleService
extends
Core
BaseService
<
CoreUser
>
{
@Autowired
UserConsoleDao
userDao
;
...
...
admin-console/src/main/resources/application.properties
View file @
b13f4fed
spring.datasource.url
=
jdbc:mysql://127.0.0.1:3306/starter?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&useSSL=false&useInformationSchema=true
spring.datasource.username
=
root
spring.datasource.password
=
123456
spring.datasource.driver-class-name
=
com.mysql.cj.jdbc.Driver
spring.datasource.
baseDataSource.
url
=
jdbc:mysql://127.0.0.1:3306/starter?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&useSSL=false&useInformationSchema=true
spring.datasource.
baseDataSource.
username
=
root
spring.datasource.
baseDataSource.
password
=
123456
spring.datasource.
baseDataSource.
driver-class-name
=
com.mysql.cj.jdbc.Driver
#spring.datasource.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
#spring.datasource.username=starter2
#spring.datasource.password=starter2
#spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
beetlsql.ds.dataSource.basePackage
=
com
beetlsql.ds.dataSource.dbStyle
=
org.beetl.sql.core.db.MySqlStyle
#有一个数据源命名为dataSource
beetlsql.mutiple.datasource
=
dataSource
beetlsql.ds.baseDataSource.basePackage
=
com
beetlsql.ds.baseDataSource.dbStyle
=
org.beetl.sql.core.db.MySqlStyle
#beetlsql.basePackage=com.ibeetl,com.xxx.yourpackage
#有一个数据源命名为baseDataSource,你可以添加多数据源
beetlsql.mutiple.datasource
=
baseDataSource
# 1,1 是管理员密码,相当于启动后就登录,方便测试,系统需要取消这俩个配置
user.id
=
1
...
...
@@ -29,12 +26,8 @@ logging.level.org.springframework.web.servlet.mvc.method.annotation=warn
server.port
=
8080
#html视图交给beetl渲染
beetl.suffix
=
html
beetlsql.dataSource.dbStyle
=
org.beetl.sql.core.db.MySqlStyle
#beetlsql.basePackage=com.ibeetl,com.xxx.yourpackage
beetlsql.basePackage
=
com
app.name
=
SpringBoot-Plus
logging.pattern.console
=
%-4relative [%thread] %-5level %logger{256} %M %L - %msg%n
spring.devtools.restart.exclude
=
static/**,templates/**
#文档预览服务的调用地址,参考https://gitee.com/kekingcn/file-online-preview 安装,没有如下配置无法使用预览功能
file.previewURL
=
http://localhost:8012/onlinePreview
...
...
admin-console/src/main/resources/beetl.properties
View file @
b13f4fed
ENGINE
=
org.beetl.core.engine.DefaultTemplateEngine
DELIMITER_STATEMENT_START
=
<!--#
DELIMITER_STATEMENT_END
=
-->
RESOURCE.tagRoot
=
common/tag
...
...
admin-console/src/main/resources/excelTemplates/admin/user/user_collection_template.xls
View file @
b13f4fed
No preview for this file type
admin-core/pom.xml
View file @
b13f4fed
...
...
@@ -54,7 +54,6 @@
<dependency>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
<version>
6.0.5
</version>
</dependency>
<!-- <dependency>
...
...
admin-core/src/main/java/com/ibeetl/admin/core/annotation/Query.java
View file @
b13f4fed
...
...
@@ -13,6 +13,7 @@ public @interface Query {
public
static
final
int
TYPE_GENERAL
=
1
;
public
static
final
int
TYPE_DATE_BETWEEN
=
2
;
//未实现
public
static
final
int
TYPE_DATETIME_BETWEEN
=
3
;
public
static
final
int
TYPE_VALUE_BETWEEN
=
4
;
public
static
final
int
TYPE_DICT
=
5
;
...
...
admin-core/src/main/java/com/ibeetl/admin/core/conf/DataSourceConfig.java
View file @
b13f4fed
...
...
@@ -9,13 +9,13 @@ import org.springframework.core.env.Environment;
import
com.zaxxer.hikari.HikariDataSource
;
@Configuration
public
class
DataSourceConfig
{
@Bean
(
name
=
"
d
ataSource"
)
@Bean
(
name
=
"
baseD
ataSource"
)
public
DataSource
datasource
(
Environment
env
)
{
HikariDataSource
ds
=
new
HikariDataSource
();
ds
.
setJdbcUrl
(
env
.
getProperty
(
"spring.datasource.url"
));
ds
.
setUsername
(
env
.
getProperty
(
"spring.datasource.username"
));
ds
.
setPassword
(
env
.
getProperty
(
"spring.datasource.password"
));
ds
.
setDriverClassName
(
env
.
getProperty
(
"spring.datasource.driver-class-name"
));
ds
.
setJdbcUrl
(
env
.
getProperty
(
"spring.datasource.
baseDataSource.
url"
));
ds
.
setUsername
(
env
.
getProperty
(
"spring.datasource.
baseDataSource.
username"
));
ds
.
setPassword
(
env
.
getProperty
(
"spring.datasource.
baseDataSource.
password"
));
ds
.
setDriverClassName
(
env
.
getProperty
(
"spring.datasource.
baseDataSource.
driver-class-name"
));
return
ds
;
}
}
...
...
admin-core/src/main/java/com/ibeetl/admin/core/conf/PasswordConfig.java
View file @
b13f4fed
...
...
@@ -8,7 +8,7 @@ import org.springframework.context.annotation.Configuration;
import
com.ibeetl.admin.core.conf.PasswordConfig.PasswordEncryptService
;
/**
* 描述: 密码工具,系统默认采用明文
* 描述: 密码工具,系统默认采用明文
存储,可以自动装配一个加密的
*
* @author : xiandafu
*/
...
...
admin-core/src/main/java/com/ibeetl/admin/core/conf/RbacDataAccessConfig.java
View file @
b13f4fed
...
...
@@ -8,6 +8,9 @@ import org.springframework.context.annotation.Configuration;
import
com.ibeetl.admin.core.rbac.DataAccessFactory
;
import
com.ibeetl.admin.core.rbac.da.DefaultDataAccessFactory
;
/**
* 数据权限,可以自动装配
*/
@Configuration
public
class
RbacDataAccessConfig
{
@ConditionalOnMissingBean
(
DataAccessFactory
.
class
)
...
...
admin-core/src/main/java/com/ibeetl/admin/core/service/CoreAuditService.java
View file @
b13f4fed
...
...
@@ -9,7 +9,7 @@ import com.ibeetl.admin.core.entity.CoreAudit;
@Service
@Transactional
public
class
CoreAuditService
extends
BaseService
<
CoreAudit
>
{
public
class
CoreAuditService
extends
Core
BaseService
<
CoreAudit
>
{
@Autowired
private
CoreAuditDao
sysAuditDao
;
...
...
admin-core/src/main/java/com/ibeetl/admin/core/service/BaseService.java
→
admin-core/src/main/java/com/ibeetl/admin/core/service/
Core
BaseService.java
View file @
b13f4fed
...
...
@@ -15,16 +15,19 @@ import com.ibeetl.admin.core.annotation.Dict;
import
com.ibeetl.admin.core.entity.CoreDict
;
import
com.ibeetl.admin.core.util.PlatformException
;
import
com.ibeetl.admin.core.util.enums.DelFlagEnum
;
import
org.springframework.beans.factory.annotation.Qualifier
;
/**
*
* 描述:
* @author : xiandafu
*/
public
class
BaseService
<
T
>
{
public
class
Core
BaseService
<
T
>
{
@Autowired
protected
CoreDictService
dictUtil
;
@Autowired
@Qualifier
(
"baseDataSourceSqlManagerFactoryBean"
)
protected
SQLManager
sqlManager
;
...
...
@@ -194,4 +197,6 @@ public class BaseService<T> {
}
}
admin-core/src/main/java/com/ibeetl/admin/core/service/CoreDictService.java
View file @
b13f4fed
...
...
@@ -21,7 +21,7 @@ import com.ibeetl.admin.core.util.enums.DelFlagEnum;
*/
@Service
@Transactional
public
class
CoreDictService
extends
BaseService
<
CoreDict
>
{
public
class
CoreDictService
extends
Core
BaseService
<
CoreDict
>
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
CoreDictService
.
class
);
...
...
Prev
1
2
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment