rest的向导工程

weihf 804dfb81fd @IPU_REQ_2022@Springboot版本升级为2.3.1.RELEASE,spring版本升级为5.2.7.RELEASE,tomcat版本升级为9.0.56 2 years ago
..
backup 0cc28ba996 ipu-rest-scaffold优化:简化pom配置文件,后续需要简化readme文件 2 years ago
docker de7eae6749 工程打包镜像输出版本@20211203:1)简化了ipu-assembly-parent中的pom,dockerfile-maven-plugin插件不使用contextDirectory或dockerfile标签。Dockerfile目前需要放置在根目录下。 2 years ago
src 0cc28ba996 ipu-rest-scaffold优化:简化pom配置文件,后续需要简化readme文件 2 years ago
.gitignore 5f25e26451 外部资源目录优化@20210226:1)建立backup备份目录,细分config、pom、sql目录。建立docker目录,装载docker相关资源。2)从研发规范中copy内容,补充.gitignore。 3 years ago
.project 83e91503df 配置文件优化调整 4 years ago
Dockerfile de7eae6749 工程打包镜像输出版本@20211203:1)简化了ipu-assembly-parent中的pom,dockerfile-maven-plugin插件不使用contextDirectory或dockerfile标签。Dockerfile目前需要放置在根目录下。 2 years ago
ipu.lic c636199a7e 解决slf4j包实现不匹配问题 4 years ago
pom.xml 804dfb81fd @IPU_REQ_2022@Springboot版本升级为2.3.1.RELEASE,spring版本升级为5.2.7.RELEASE,tomcat版本升级为9.0.56 2 years ago
readme.md 0cc28ba996 ipu-rest-scaffold优化:简化pom配置文件,后续需要简化readme文件 2 years ago

readme.md

###打包命名 mvn clean package dockerfile:build dockerfile:push mvn clean package dockerfile:build mvn clean package dockerfile:push

###一、运行工程

  1. SpringBoot启动 启动RestScaffoldStart类,Program arguments中携带参数--server.port=8080作为服务端口。
  2. 浏览器访问 浏览器中输入http://localhost:8080/ipu/home/index.html打开登录页面,随意输入账号密码登录。
  3. 接口调用 登录接口访问http://localhost:8080/ipu/login,对应AuthController中login方法。 菜单接口访问http://localhost:8080/ipu/menu,对应AuthController中takeMenu方法。

###二、工程介绍 2.1. pom文件介绍 1)继承ipu-rest-libs的3.1-SNAPSHOT版本,相关依赖已经被引入;2)引入ipu私服;3)在标签中指定启动类,用于打包指MAIN-CLASS文件;4)显性引用spring-boot-maven-plugin插件。 2.2 ipu-spring-mvc.xml配置文件介绍 SpringBoot定制配置文件,指定component-scan属性,用于扫描Spring组件。 2.3 exception_messages_zh_CN.properties配置文件介绍 当前服务异常编码和异常信息的映射配置,可变量替换。 2.4 多环境配置dev、pro、test介绍 默认使用dev 2.5 webapp介绍 webapp下可存放静态页面,便于前后端开发联调。

###三、SQL统一管理 SQL被统一存放在classpath的sql路径下,如:sql.ipu.demo。 使用命名空间+id的方式定位SQL配置,DbSqlMgmtController有代码使用范例。

###四、ipu-nosql组件

  • 1.ipu-nosql组件的引入
    • 以maven为例,请在pom.xml中引入ipu-nosql组件和mongodb驱动包。如果使用的springboot为2.2.1.RELEASE或更高版本时,则不再需要添加mongodb驱动包。因为该版本已支持3.11.2的mongodb驱动包。 <dependency> <groupId>com.ai.ipu</groupId> <artifactId>ipu-nosql</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.11.2</version> </dependency>
  • 目前ipu-nosql组件仅支持mongoDB,对应的配置文件为:ipu-nosql.xml
  • 该组件支持事务:遵循规则为:execution(* com.ai..service..Impl.process(..))
    • 1、execution(): 表达式主体。
    • 2、第一个*号:表示返回类型,*号表示所有的类型。
    • 3、包名:表示需要拦截的包名,后面的两个句点表示当前包和当前包的所有子包,拦截com.ai..service..包、子包下所有类的方法。
    • 4、第二个*号:表示类名,*号表示所有的类,*Impl表示拦截以Impl结尾的类名
    • 5、最后这个星号表示方法名,号表示所有的方法,process(..)表示会拦截以process开头的方法,后面括弧里面表示方法的参数,两个句点表示任何参数。
    • 若开启事物请在ipu-nosql.xml配置文件中将needTranscation属性设置为true <config name="needTranscation" value="true"/>
  • 该组件使用案例在:MongoDbController中

###五、springboot优雅停止服务

  • 1.组件的引入
    • 以maven为例,请在pom.xml中引入spring-boot-starter-actuator组件。 xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
  • 2.在application.properties配置(注意以下为springboot1.X的配置,springboot2.X见application2X.properties): properties #启用shutdown endpoints.shutdown.enabled=true #禁用密码验证 endpoints.shutdown.sensitive=false # 自定义管理端点的前缀(保证安全) management.context-path=/MyActuator # 指定管理端口 management.port=12581 # 不允许远程管理连接(不允许外部调用保证安全) management.address=127.0.0.1
  • 3.停止springboot应用的http接口只支持POST。在linux下使用命令curl -X POST http://127.0.0.1:12581/MyActuator/shutdown;在windows下使用工具,选择POST方式。
  • 4.测试案例见GracefulTestController.java。在浏览器里输入http://服务ip:port/ipu/graceful/hello

###六、springboot热部署

  • 1.组件的引入
    • 以maven为例,请在pom.xml中引入spring-boot-devtools组件。 xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency>
  • 2.在application.properties配置: properties #设置开启热部署 spring.devtools.restart.enabled=true #重启目录 spring.devtools.restart.additional-paths=src/main/java spring.devtools.restart.exclude=WEB-INF/** #页面热加载 spring.freemarker.cache=false
  • 3.测试案例见NacosConfigController.java。

###七、nacos配置中心和注册中心 注意:配置项请选择@Controller或@Component或@SpringBootApplication或@Configuration所在的类,否则配置将不生效。

  • 1.nacos配置中心组件的引入
    • 以maven为例,请在pom.xml中引入nacos组件。如果使用的springboot为2.x或更高版本时,需要使用0.2.1的nacos组件;使用的springboot为1.x,需要使用0.1.1的nacos组件。 xml <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>nacos-config-spring-boot-starter</artifactId> <version>0.1.1</version> <exclusions> <exclusion> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>0.6.2</version> </dependency>
  • 2.nacos配置中心的配置文件为:application.properties

    ```properties
    nacos.config.server-addr=127.0.0.1:8848
    ```
    
  • 3.nacos配置中心使用案例在NacosConfigController中。此案例只支持springboot,springcloud的示例不在当前工程。

  • 4.nacos注册中心组件的引入

    • 以maven为例,请在pom.xml中引入nacos组件。 xml <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>nacos-discovery-spring-boot-starter</artifactId> <version>0.1.1</version> </dependency>
  • 5.nacos注册中心的配置文件为:application.properties

    ```properties
    nacos.discovery.server-addr=127.0.0.1:8848
    ```
    
  • 6.nacos注册中心使用案例为NacosConsumerControl.java(服务消费/调用)。nacos通过springboot注册服务有bug:服务注册后权重为0,元数据为空,导致服务消费查不到此服务。需要剔出对缺省nacos-client0.2.1的依赖,增加对nacos-client0.6.2的依赖。此案例只支持springboot,springcloud的示例在工程ipu-nacos_cloud中。查看服务注册后,注册中心保存的注册信息命令为curl -X GET '127.0.0.1:8848/nacos/v1/ns/instance?serviceName=ipu-rest-scaffold&ip=10.1.234.70&port=9999&cluster=DEFAULT'

  • 7.nacos组件使用了logback,因此需要增加logback日志配置;否则logback缺省只输出info和error级别的日志。

###打包运行 java -Dipu.lic.path=ipu.lic -jar ipu-rest-scaffold.jar --server.port=8080

###可配置性(待开发) 总体:应用名设置;Logo设置;风格选择;皮肤选择; 登录界面:登录背景设置;是否显示保存密码;是否显示自动登录;自定义账号密码校验,前端和后端; 首页界面:菜单层级设置;

yml和properties格式转换:http://toyaml.com/

###编译报错 repo.maven.apache.org/151.101.196.215 failed: Connection timed out: connect 解决方法:增加阿里的镜像。 alimaven aliyun maven central http://maven.aliyun.com/nexus/content/groups/public/

###提供内容 1)portal 2)数据库操作服务 3)简易的pom 4)启动脚本

###Session配置 RedisSessionConfig用于设置Session超时时间,默认屏蔽此代码,避免对Redis的依赖,maxInactiveIntervalInSeconds = 1800为官方设置超时时间,define.session.timeout为自定义设置超时时间。

关闭Session,不使用redis 1)屏蔽或删除RedisSessionConfig。 2)启动类RestScaffoldStart中屏蔽registerInterceptor()方法。 3)application.yml配置中设置store-type: none 4)AuthServiceImpl中屏蔽SpringSessionManager调用,MenuServiceImpl中屏蔽@Cacheable缓存使用 5)spring session使用redis时,2.1.13及以上版本不能动态修改Session超时时间,需要将相应版本降低到2.1.13以下

一、context-path配置的版本差异 2.x:server.servlet.context-path=/ipu 1.x:server.context-path=/ipu 二、默认:server.servlet-path=/