管理后台(guns的获取与修改)

背景

最近有个小项目,需要一个管理后台,以前的由于技术层太旧了而且其它依赖比较多,不想带过来,于是想趁着新项目,试一下一些开源的业务框架.

后台管理系统相关介绍与guns的说明

jeecg,jeesite以前经常听到,去下载来看了,发现jeecg设计的过于自动了,都不太清楚怎么开发新的业务
jeesite还不错,有明显暴露的web编写,其界面和使用体验也真不错,不过其表要按其标准来设计.而且底层代码不开源
guns 比较新,也比较简单,其代码全部开源,没有上面的两个那么完善(其实还差得有点远),不过重在简单易看好修改,所以选择这个

其它还有基于spring cloud等的开源框架,考虑到我们只是刚开始,所以没去选择

guns分析与其适应性修改

现在时间是2018/12,guns的作者把其功能 拆分了多个模块依赖
管理后台的业务主要是 https://gitee.com/stylefeng/guns
底层依赖是rose-kernel https://gitee.com/stylefeng-Roses/roses-kernel
其次,是生成器模块https://gitee.com/stylefeng/guns-generator

其代码比较 手动,均需要自己编写.
管理后台(guns的获取与修改)_第1张图片

适应性修改

如果在使用过程中,希望项目能更扩展性好一些,可以把其 依赖的 底层业务模块加到 系统中.
新建一个空的maven project
把下面几个项目引进来

采用maven的父子模块方式,把各依赖均加到自己的服务中

drwxr-xr-x 1 aguns 1049089    0 12月 14 14:26 guns/
drwxr-xr-x 1 aguns 1049089    0 12月 14 14:26 guns-generator/
drwxr-xr-x 1 aguns 1049089    0 12月 14 14:26 kernel-core/
drwxr-xr-x 1 aguns 1049089    0 12月 14 14:26 kernel-model/
-rw-r--r-- 1 aguns 1049089 6840 12月 14 10:11 pom.xml

/pom.xml 中,这一部分是copyhttps://gitee.com/stylefeng-Roses/roses-kernel.git 中的/pom.xml,有所修改,

   
        org.springframework.boot
        spring-boot-starter-parent
        2.0.1.RELEASE
    

    com.mytest.manage
    backguns
    pom

    1.0-SNAPSHOT

    
        kernel-model
        kernel-core
        guns
    

    
        1.8
        UTF-8
        UTF-8
        Finchley.RELEASE
        2.3
        1.2.47
        1.1.10
        2.3.2
        0.9.1
        4.1.2
        2.0.1
        1.18.0
    

    
        
            
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            

            
            
                com.alibaba
                druid
                ${druid.version}
            
            
                com.baomidou
                mybatis-plus-boot-starter
                ${mp.springboot.version}
            
            
                com.baomidou
                mybatis-plus
                ${mp.springboot.version}
            

            
            
                cn.hutool
                hutool-core
                ${hutool.version}
            
            
                com.alibaba
                fastjson
                ${fastjson.version}
            

            
            
                com.github.penggle
                kaptcha
                ${kaptcha.version}
            

            
            
                io.jsonwebtoken
                jjwt
                ${jwt.version}
            

            
                org.projectlombok
                lombok
                ${lombok.versin}
            

            
                de.codecentric
                spring-boot-admin-starter-server
                ${spring.boot.admin}
            
            
                de.codecentric
                spring-boot-admin-server-ui
                ${spring.boot.admin}
            
            
                de.codecentric
                spring-boot-admin-starter-client
                ${spring.boot.admin}
            

        
    

    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.7.0
                
                    1.8
                    1.8
                
            
            
                org.apache.maven.plugins
                maven-source-plugin
                3.0.1
                
                    true
                
                
                    
                        compile
                        
                            jar
                        
                    
                
            
            
                org.apache.maven.plugins
                maven-javadoc-plugin
                2.9.1
                
                    
                        package
                        
                            jar
                        
                    
                
                
                    -Xdoclint:none
                
            
            
                org.apache.maven.plugins
                maven-gpg-plugin
                1.5
                
                    
                        verify
                        
                            sign
                        
                    
                
            
        
        
            
                src/main/resources
            
            
                src/main/java
                
                    **/*.xml
                
            
        
    

kernel-model/pom.xml


        backguns
        com.mytest.manage
        1.0-SNAPSHOT
    

    kernel-model
    jar
    v201812

    一些通用实体,枚举,异常等规范

    
        
            com.baomidou
            mybatis-plus
            provided
        
        
            org.projectlombok
            lombok
        

        
        
            org.springframework
            spring-web
            provided
        
        
            org.springframework.boot
            spring-boot-configuration-processor
            true
        
    

kernel-core/pom.xml


        backguns
        com.mytest.manage
        1.0-SNAPSHOT
    

    kernel-core
    v201812

    jar
    核心包,被其他模块引用

    
        
            com.mytest.manage
            kernel-model
            v201812
        

        
        
            cn.hutool
            hutool-core
        

        
        
            mysql
            mysql-connector-java
        
        
            com.baomidou
            mybatis-plus-boot-starter
        
        
            com.baomidou
            mybatis-plus
        
        
            org.springframework.boot
            spring-boot-starter-jdbc
        
        
            com.alibaba
            druid
        

        
        
            com.alibaba
            fastjson
        

        
        
            org.springframework.boot
            spring-boot-starter-aop
        

        
        
            org.springframework.cloud
            spring-cloud-starter-openfeign
            provided
        

        
        
            org.springframework.boot
            spring-boot-starter-data-redis
            provided
        

        
        
            javax.servlet
            javax.servlet-api
            provided
        
        
            org.springframework.boot
            spring-boot-starter-web
            provided
        

        
        
            org.springframework.boot
            spring-boot-starter-cache
            provided
        

        
            org.springframework.boot
            spring-boot-configuration-processor
            true
        

    

guns-generator/pom.xml

cn.stylefeng.guns
    guns-generator
    v201812

    jar

    guns-generator
    代码生成器

    
        org.springframework.boot
        spring-boot-starter-parent
        2.0.1.RELEASE
    

    
        UTF-8
        UTF-8
        1.8
    

    
        
            com.mytest.manage
            kernel-core
            201812
        

        
            com.ibeetl
            beetl
            2.9.3
        
        
            com.baomidou
            mybatis-plus-generate
            2.3
        
        
            org.apache.velocity
            velocity-engine-core
            2.0
        
        
            org.springframework.boot
            spring-boot-starter-web
            provided
        
    

    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.1
                
                    ${java.version}
                    ${java.version}
                
            
            
                org.apache.maven.plugins
                maven-source-plugin
                3.0.1
                
                    true
                
                
                    
                        compile
                        
                            jar
                        
                    
                
            
            
                org.apache.maven.plugins
                maven-javadoc-plugin
                2.9.1
                
                    
                        package
                        
                            jar
                        
                    
                
                
                    -Xdoclint:none
                
            
            
                org.apache.maven.plugins
                maven-gpg-plugin
                1.5
                
                    
                        verify
                        
                            sign
                        
                    
                
            
        
        
            
                src/main/resources
            
            
                src/main/java
                
                    **/*.xml
                
            
        
    

guns/pom.xml


        backguns
        com.mytest.manage
        1.0-SNAPSHOT
    

    cn.stylefeng.guns
    guns
    1.0.0

    guns-admin
    mytest后台(guns 的spring boot版本)

    jar

    
        UTF-8
        UTF-8
        1.8
        1.4.0
        2.3.2
        3.3.1
        2.9.3
        2.9.2
        2.6.11
        8.0.11
        0.9.0
    

    

        
            cn.stylefeng.guns
            guns-generator
            v201812
        

        
        
            com.mytest.manage
            kernel-core
            v201812
        

        
            mysql
            mysql-connector-java
            ${mysql-connector-java.version}
        

        
        
            org.springframework.boot
            spring-boot-starter-aop
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-cache
        
        
            org.springframework.boot
            spring-boot-starter-validation
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            org.springframework.boot
            spring-boot-devtools
            true
        

        
        
            org.apache.shiro
            shiro-core
            ${shiro.version}
            
                
                    slf4j-api
                    org.slf4j
                
            
        
        
            org.apache.shiro
            shiro-spring
            ${shiro.version}
        
        
            org.apache.shiro
            shiro-ehcache
            ${shiro.version}
            
                
                    slf4j-api
                    org.slf4j
                
            
        
        
            org.ehcache
            ehcache
            ${ehcache.version}
        

        
        
            com.github.penggle
            kaptcha
            ${kaptcha.version}
        

        
        
            com.ibeetl
            beetl
            ${beetl.version}
        

        
        
            io.springfox
            springfox-swagger2
            ${swagger.version}
        
        
            io.springfox
            springfox-swagger-ui
            ${swagger.version}
        

        
        
            io.jsonwebtoken
            jjwt
            ${jwt.version}
        

        
        
        
        
        
        
        
        
        
    

    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.1
                
                    ${java.version}
                    ${java.version}
                
            
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    true
                
            
            
                org.apache.maven.plugins
                maven-resources-plugin
                
                    
                        @
                    
                    false
                
            
        
        
            
                src/main/webapp
            
            
                src/main/resources
                true
            
            
                src/main/java
                
                    **/*.xml
                
            
        
    

    
        
            local
            
                local
            
            
                true
            
        
        
            dev
            
                dev
            
        
        
            test
            
                test
            
        
        
            produce
            
                produce
            
        
    

怎么使用生成代码的工具?

代码生成菜单:

管理后台(guns的获取与修改)_第2张图片

随后,在生成的代码中找到 TUser.sql,里面有增加到菜单 的语句(建议 )
,或者,用下面的方式:增加到菜单,
管理后台(guns的获取与修改)_第3张图片

再分配菜单到角色管理员中,然后重启刷新即可

双数据库?

guns已经有相应的数据源处理了,但我都调不通,后来发现有个要修改的地方:

如果在做多数据源的时候,有下面这样的配置,则spring会自己生成一个bean名为datasource的对象,

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/guns?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT
    username: root
    password: root
    filters: wall,mergeStat

解决:
可以把上面的spring: 去掉改成自定义的,即把默认数据源给去掉!!

biz:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/guns?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT
    username: root
    password: root
    filters: wall,mergeStat

当然,相应的properties配置也要改!!!

@Bean
@ConfigurationProperties(prefix = "biz.datasource")
public DruidProperties druidProperties() {
    return new DruidProperties();
}

原因解释:
在com.baomidou.mybatisplus.spring.boot.starter.MybatisPlusAutoConfiguration中有如下代码:

@Bean
@ConditionalOnMissingBean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
    MybatisSqlSessionFactoryBean factory = new MybatisSqlSessionFactoryBean();

由于使用了spring默认的配置,则这个datasource不是我们想要的 DynamicDataSource
如果自己配置的DynamicDataSource对象也叫datasource,则自己的对象不会执行导致后续请求总是会走 默认数据源!!!

更合理的双数据源修改

作者之前的双数据源不太友好,这里修改成如下配置,

#多数据源情况的配置
guns:
  muti-datasource:
    open: true
    datasources[0]:
      name: dataSourceGuns
      url: jdbc:mysql://127.0.0.1:3306/guns?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT
      username: mytest
      password: mytest
      filters: wall,mergeStat
    datasources[1]:
      name: dataSourceBiz
      url: jdbc:mysql://127.0.0.1:3306/mytest?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT
      username: mytest
      password: mytest

然后配置代码也有相应的修改

@Configuration
@ConditionalOnProperty(prefix = "guns.muti-datasource", name = "open", havingValue = "true")
@EnableTransactionManagement(order = 2, proxyTargetClass = true)
@MapperScan(basePackages = {"cn.stylefeng.guns.modular.*.dao", "cn.stylefeng.guns.modular.system.dao.mapping"})
public class MultiDataSourceConfig {

    private  static Logger log = LoggerFactory.getLogger(MultiDataSourceConfig.class);



    /**
     * druid配置
     */
    @Bean
    @ConfigurationProperties(prefix = "bizs.datasource")
    public DruidProperties druidProperties() {
        return new DruidProperties();
    }



    /**
     * 多数据源切换的aop
     */
    @Bean
    public MultiSourceExAop multiSourceExAop() {
        return new MultiSourceExAop();
    }

    /**
     * 生成DruidDataSource数据源
     */
    private DruidDataSource dataSource(DruidProperties druidProperties) {
        DruidDataSource dataSource = new DruidDataSource();
        druidProperties.config(dataSource);
        return dataSource;
    }


    @Autowired
    private  MutiDataSourceListProperties mutiDataSourceListProperties;

    @Bean
    @ConfigurationProperties(prefix = "guns.muti-datasource")
    public MutiDataSourceListProperties mutiDataSourceProperties() {
        return new MutiDataSourceListProperties();
    }

    /**
     * 多数据源连接池配置
     */
    @Bean
    public DynamicDataSource mutiDataSource() {

        //获取properteis 生成 datasourcelist
        HashMap hashMap = new HashMap<>();
        DruidDataSource defaultDatasource = null;
        for (DruidProperties druidProperties : mutiDataSourceListProperties.getDatasources()) {
            DruidDataSource currentDatasource = dataSource(druidProperties);
            try {
                currentDatasource.init();
            } catch (SQLException sql) {
                sql.printStackTrace();
            }

            if (defaultDatasource == null) {
                log.info("这里设置数组第一个为默认,其url为:"+druidProperties.getUrl());
                defaultDatasource = currentDatasource;
            }

            hashMap.put(druidProperties.getName(), currentDatasource);
        }
        //加到 DynamicDataSource中
        DynamicDataSource dynamicDataSource = new DynamicDataSource();
        dynamicDataSource.setTargetDataSources(hashMap);
        dynamicDataSource.setDefaultTargetDataSource(defaultDatasource);
        return dynamicDataSource;
    }

...
}

多数据源配置

/**
 * 多数据源配置
 */
public class MutiDataSourceListProperties {

    private boolean open;

    public boolean isOpen() {
        return open;
    }

    public void setOpen(boolean open) {
        this.open = open;
    }

    private List datasources;

    public List getDatasources() {
        return datasources;
    }

    public void setDatasources(List datasources) {
        this.datasources = datasources;
    }
}

说明

guns是比较新的业务架子,也比较简单而且全部开源,
感谢作者的开源,非常便利,希望大家能给这个项目多多贡献
附项目链接
https://gitee.com/stylefeng/guns



























你可能感兴趣的:(管理平台)