###一、运行工程 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驱动包。 ``` com.ai.ipu ipu-nosql 0.0.1-SNAPSHOT org.mongodb mongo-java-driver 3.11.2 ``` - 目前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 ``` ``` - 该组件使用案例在:MongoDbController中 ###五、springboot优雅停止服务 - 1.组件的引入 - 以maven为例,请在pom.xml中引入spring-boot-starter-actuator组件。 ```xml org.springframework.boot spring-boot-starter-actuator ``` - 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 org.springframework.boot spring-boot-devtools ``` - 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配置中心和注册中心 - 1.nacos配置中心组件的引入 - 以maven为例,请在pom.xml中引入nacos组件。如果使用的springboot为2.x或更高版本时,需要使用0.2.1的nacos组件;使用的springboot为1.x,需要使用0.1.1的nacos组件。 ```xml com.alibaba.boot nacos-config-spring-boot-starter 0.1.1 com.alibaba.nacos nacos-client com.alibaba.nacos nacos-client 0.6.2 ``` - 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 com.alibaba.boot nacos-discovery-spring-boot-starter 0.1.1 ``` - 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/