千家信息网

jeecg-boot中怎么新建一个module模块

发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,这篇文章给大家介绍jeecg-boot中怎么新建一个module模块,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。jeecg-boot新建module模块新建maven项目新建m
千家信息网最后更新 2024年11月30日jeecg-boot中怎么新建一个module模块

这篇文章给大家介绍jeecg-boot中怎么新建一个module模块,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

jeecg-boot新建module模块

新建maven项目

新建maven项目 取名jeecg-boot-module-jm

可以采用idea、myeclipse 等工具来新建一个maven项目

其中 pom.xml文件内容如下

        4.0.0        jeecg-boot-module-jm        2.0.2                        org.jeecgframework.boot                jeecg-boot-parent                2.0.2                                                        aliyun                        aliyun Repository                        http://maven.aliyun.com/nexus/content/groups/public                                                        false                                                                                jeecg                        jeecg Repository                        http://maven.jeecg.org/nexus/content/repositories/jeecg                                                        false                                                                                                        org.jeecgframework.boot                        jeecg-boot-base-common                                        

注意:我这个pom文件直接复制了jeecg-boot-module-system 内容,将jeecg-boot-module-system名称改为jeecg-boot-module-jm,注意注释了

                                                                           org.springframework.boot                                spring-boot-maven-plugin                                                

这段代码,因为新建的项目要打包为jar在jeecg-boot-module-system引用,所以不需要把该项目打包一个springboot项目,注释上面的代码就可以了。

  • 创建业务包

在项目根目录新建包名org.jeecg.modules.hello(以issues:373为例,也可以使用其他包名,记住这个包名,后面在接口问题swagger-ui使用到)

  • 添加业务(测试)代码

(以issues:373为例,后面针对提出的问题,进行一一解答)这段代码后面在swagegr-ui中访问不到,因为方法上没有添加@ApiOperation

package org.jeecg.modules.hello;import org.jeecg.common.api.vo.Result;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import io.swagger.annotations.Api;import lombok.extern.slf4j.Slf4j;/** * 测试新的module * @author chengtg * */@Slf4j@Api(tags="新建module--jm")@RestController@RequestMapping("/hello")public class HelloController  {        @GetMapping(value="/")        public Result hello(){                Result result = new Result();                result.setResult("hello word!");                result.setSuccess(true);                return result;        }}

注意:我修改了注释(@Api(tags="新建module--jm")),后面在swagegr-ui文档用到

  • 将新建的项目纳入parent中

将新建的jeecg-boot-module-jm 纳入jeecg-boot-parent中

在jeecg-boot-framework项目中的pom文件 modules中添加jeecg-boot-module-jm

结果如下代码

                        jeecg-boot-base-common                jeecg-boot-module-system                jeecg-boot-module-jm        

添加项目依赖

在jeecg-boot-module-system项目中依赖 jeecg-boot-module-jms

修改jeecg-boot-module-system项目的pom文件

                                        org.jeecgframework.boot                        jeecg-boot-base-common                                                        org.jeecgframework.boot                        jeecg-boot-module-jm                        2.0.2                

编译整个jeecg-boot-framework

如果编译如下:

[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ jeecg-boot-module-system ---[INFO] Installing /Users/chengtg/WS-platform/jeecg-boot-framework/jeecg-boot-module-system/target/jeecg-boot-module-system-2.0.2.jar to /Users/chengtg/.m2/repository/org/jeecgframework/boot/jeecg-boot-module-system/2.0.2/jeecg-boot-module-system-2.0.2.jar[INFO] Installing /Users/chengtg/WS-platform/jeecg-boot-framework/jeecg-boot-module-system/pom.xml to /Users/chengtg/.m2/repository/org/jeecgframework/boot/jeecg-boot-module-system/2.0.2/jeecg-boot-module-system-2.0.2.pom[INFO] ------------------------------------------------------------------------[INFO] Reactor Summary for jeecg-boot-parent 2.0.2:[INFO] [INFO] jeecg-boot-parent .................................. SUCCESS [  0.236 s][INFO] jeecg-boot-base-common ............................. SUCCESS [  1.143 s][INFO] jeecg-boot-module-jm ............................... SUCCESS [  1.066 s][INFO] jeecg-boot-module-system ........................... SUCCESS [  3.125 s][INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time:  5.872 s[INFO] Finished at: 2019-08-04T21:41:09+08:00[INFO] ------------------------------------------------------------------------

说明,新建项目jeecg-boot-module-jm并在jeecg-boot-module-system中依赖,成功!

  • 启动jeecg-boot-module-system项目

  • 访问接口文档swagger

http://localhost:8080/jeecg-boot/doc.html

截图如下:

问题来了:为什么新添加的HelloController中@Api(tags="新建module--jm")没有 显示

原因查看Swagger2Config配置,Swagger2Config.java

因为截图中红色圈出来的 部分

//加了ApiOperation注解的类,才生成接口文档.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))

表示只有在controller类的方法上要添加ApiOperation注解的,否则是不生成swagegr-ui文档

  • 修改HelloController代码

修改jeecg-boot-module-system-jm项目HelloController类,给hello方法添加ApiOperation注解

package org.jeecg.modules.hello;import org.jeecg.common.api.vo.Result;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import io.swagger.annotations.Api;import io.swagger.annotations.ApiOperation;import io.swagger.annotations.ApiParam;import lombok.extern.slf4j.Slf4j;/** * 测试新的module * @author chengtg * */@Slf4j@Api(tags="新建module--jm")@RestController@RequestMapping("/hello")public class HelloController  {        @ApiOperation("测试hello方法")        @GetMapping(value="/")        public Result hello(){                Result result = new Result();                result.setResult("hello word!");                result.setSuccess(true);                return result;        }}

重新编译启动。

再次访问接口文档swagger:http://localhost:8080/jeecg-boot/doc.html

  • 奇迹出现了

  • 测试接口-调试

代码如下:

package org.jeecg.config;import java.util.HashMap;import java.util.LinkedHashMap;import java.util.Map;import javax.servlet.Filter;import org.apache.shiro.mgt.DefaultSessionStorageEvaluator;import org.apache.shiro.mgt.DefaultSubjectDAO;import org.apache.shiro.mgt.SecurityManager;import org.apache.shiro.spring.LifecycleBeanPostProcessor;import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;import org.apache.shiro.spring.web.ShiroFilterFactoryBean;import org.apache.shiro.web.mgt.DefaultWebSecurityManager;import org.jeecg.modules.shiro.authc.ShiroRealm;import org.jeecg.modules.shiro.authc.aop.JwtFilter;import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.DependsOn;/** * @author: Scott * @date: 2018/2/7 * @description: shiro 配置类 */@Configurationpublic class ShiroConfig {                /**         * Filter Chain定义说明          *          * 1、一个URL可以配置多个Filter,使用逗号分隔         * 2、当设置多个过滤器时,全部验证通过,才视为通过         * 3、部分过滤器可指定参数,如perms,roles         */        @Bean("shiroFilter")        public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {                ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();                shiroFilterFactoryBean.setSecurityManager(securityManager);                // 拦截器                Map filterChainDefinitionMap = new LinkedHashMap();                // 配置不会被拦截的链接 顺序判断                filterChainDefinitionMap.put("/hello/**", "anon"); //测试新添加的module,不带token访问                filterChainDefinitionMap.put("/sys/login", "anon"); //登录接口排除                filterChainDefinitionMap.put("/sys/getEncryptedString", "anon"); //获取加密串                filterChainDefinitionMap.put("/sys/sms", "anon");//短信验证码                filterChainDefinitionMap.put("/sys/phoneLogin", "anon");//手机登录                         filterChainDefinitionMap.put("/sys/user/checkOnlyUser", "anon");//校验用户是否存在                filterChainDefinitionMap.put("/sys/user/register", "anon");//用户注册                filterChainDefinitionMap.put("/sys/user/querySysUser", "anon");//根据手机号获取用户信息                filterChainDefinitionMap.put("/sys/user/phoneVerification", "anon");//用户忘记密码验证手机号                filterChainDefinitionMap.put("/sys/user/passwordChange", "anon");//用户更改密码                filterChainDefinitionMap.put("/auth/2step-code", "anon");//登录验证码                filterChainDefinitionMap.put("/sys/common/view/**", "anon");//图片预览不限制token                filterChainDefinitionMap.put("/sys/common/download/**", "anon");//文件下载不限制token                filterChainDefinitionMap.put("/sys/common/pdf/**", "anon");//pdf预览                filterChainDefinitionMap.put("/generic/**", "anon");//pdf预览需要文件                filterChainDefinitionMap.put("/", "anon");                filterChainDefinitionMap.put("/doc.html", "anon");                filterChainDefinitionMap.put("/**/*.js", "anon");                filterChainDefinitionMap.put("/**/*.css", "anon");                filterChainDefinitionMap.put("/**/*.html", "anon");                filterChainDefinitionMap.put("/**/*.svg", "anon");                filterChainDefinitionMap.put("/**/*.jpg", "anon");                filterChainDefinitionMap.put("/**/*.png", "anon");                filterChainDefinitionMap.put("/**/*.ico", "anon");                filterChainDefinitionMap.put("/druid/**", "anon");                filterChainDefinitionMap.put("/swagger-ui.html", "anon");                filterChainDefinitionMap.put("/swagger**/**", "anon");                filterChainDefinitionMap.put("/webjars/**", "anon");                filterChainDefinitionMap.put("/v2/**", "anon");                                //性能监控                filterChainDefinitionMap.put("/actuator/metrics/**", "anon");                filterChainDefinitionMap.put("/actuator/httptrace/**", "anon");                filterChainDefinitionMap.put("/actuator/redis/**", "anon");                                //表单设计器                filterChainDefinitionMap.put("/desform/**", "anon"); //自定义表单                filterChainDefinitionMap.put("/test/jeecgDemo/demo3", "anon"); //模板测试                filterChainDefinitionMap.put("/test/jeecgDemo/redisDemo/**", "anon"); //redis测试                                //流程模块组件请求                filterChainDefinitionMap.put("/act/process/**", "anon");                filterChainDefinitionMap.put("/act/task/**", "anon");                filterChainDefinitionMap.put("/act/model/**", "anon");                filterChainDefinitionMap.put("/service/editor/**", "anon");                filterChainDefinitionMap.put("/service/model/**", "anon");                filterChainDefinitionMap.put("/service/model/**/save", "anon");                filterChainDefinitionMap.put("/editor-app/**", "anon");                filterChainDefinitionMap.put("/diagram-viewer/**", "anon");                filterChainDefinitionMap.put("/modeler.html", "anon");                filterChainDefinitionMap.put("/designer", "anon");                filterChainDefinitionMap.put("/designer/**", "anon");                filterChainDefinitionMap.put("/plug-in/**", "anon");                        //排除Online请求                filterChainDefinitionMap.put("/auto/cgform/**", "anon");                //FineReport报表                filterChainDefinitionMap.put("/ReportServer**", "anon");                        // 添加自己的过滤器并且取名为jwt                Map filterMap = new HashMap(1);                filterMap.put("jwt", new JwtFilter());                shiroFilterFactoryBean.setFilters(filterMap);                // 
      
    
0