本文是对JHipster开发文档的部分翻译,供个人学习之用。
原文链接:https://jhipster.github.io/development/
1.配置IDE--IDEA
导入项目:
- 正常打开项目
- 会检测到maven,然后自动构建项目
去除包(不一定要执行):
- 右键node_modules/文件夹
- 选择"Mark Directory As",选择"Excluded"
Spring支持:
为一个新项目的JHipster模块添加Spring支持
首先打开菜单File->Project Structure->Modules,点击“+”,选择“Spring”将Spring代码添加到项目中。
可能会提示有未映射的Spring配置文件,点击右边的“+”,将所有Spring文件都添加到项目中。
应用热部署:
Spring Boot devtools已经被JHipster配置,当项目的classess编译后会“热重启”应用。
默认情况下IDEA不会在应用运行时自动编译文件,为了启用这一特性:
- 打开菜单File->Settings->Build,Execution,Deployment->Compiler,选择Make project automatically
- 打开Action窗口:Ctrl+Alt+Shift+/ (Windows)
- 进入Registry...,选择compiler.automake.allow.when.app.running
Maven IDE 配置:
如果使用maven,需要激活“IDE”配置,用于执行特定IDE的调整。
打开菜单View->Tool Windows检查IDE maven配置并激活。
2.应用配置
默认情况下JHipster采用“development”配置,我们不需要进行任何改动。
JHipster有两种Spring配置文件俺:
- dev开发环境配置:为了开发的简易性和效率
- prod生产环境配置:为了性能和可伸缩性
这些配置文件采用两种配置方式:
- Maven/Gradle配置文件在构建时使用,例如mvn -Pprod package 或 gradle bootRepackage -Pprod将会把应用打包。
- Spring配置文件在运行时使用,Spring beans将会根据配置文件有不同的行为。
Spring配置文件由Maven/Gradle来设置,所以这两种方法中有包含关系:可以同时有Maven/Gradle和Spring的prod配置文件。
注意:Spring配置文件用于配置JHipster应用的属性。
默认情况下,JHipster使用dev配置文件:
如果不使用Maven/Gradle运行,在IDE中右击启动Application类。
如果用Maven运行应用,用Maven Wrapper运行./mvnw或用自己的Maven安装运行mvn。
如果用Gradle运行应用,用Gradle Wrapper运行./gradlew或用自己的Gradle安装运行gradle。
当使用Angular 2+,如果需要用dev配置文件允许的webpack编译执行clean run,可以传递webpack参数:./mvnw -Pdev,webpack或./gradlew -Pdev -Pwebpack
生产环境下,JHipster使用prod配置文件:
可以用Maven或Gradle来运行:
- Maven:./mvnw -Pprod或mvn -Pprod
- Gradle:./gradlew -Pprod或gradle -Pprod
如果想要将应用打包为WAR文件,可以为Maven或Gradle提供配置文件:
- Maven:./mvnw -Pprod package或mvn -Pprod package
- Gradle:./gradlew -Pprod bootRepackage或gradle -Pprod bootRepackage
当使用WAR文件来运行生产环境下的应用,默认使用打包过程中的配置文件。如果想要覆盖,可以用VM参数显式写出替代:
- ./java -jar jhipster-0.0.1-SNAPSHOT.war --spring.profiles.active=...
Spring 配置文件变换:
JHipster有额外的配置文件可用于变换:swagger用于启动swagger,no-liquibase用于停用liquibase。
这些可以和dev、prod配置文件一起使用。在默认情况下,swagger配置文件在prod中不可用,在dev可通过在application.yml中设置spring.profiles.include属性来启用。
swagger和no-liquibase只能在运行时使用:
- IDE中,当spring.profiles.active=dev,no-liquibase(需要显式引入dev和prod配置文件)时,运行主应用类
- 打包的应用中,./java -jar jhipster-0.0.1-SNAPSHOT.war --spring.profiles.active=prod,no-liquibase
使用Maven:
- ./mvnw -Pprod,swagger,no-liquibase
- ./mvnw -Pdev,no-liquibase
使用Gradle:
- ./gradlew -Pprod -Pswagger -Pno-liquibase
- ./gradlew -Pno-liquibase
Spring配置文件用于配置应用的属性:
JHipster生成一个Spring Boot应用,并且可以用标准Spring Boot属性机制来配置。
这些属性都被JHipster统一配置,通常在开发和生产环境模式下游不同的值。
在JHipster应用中,有三种属性:
- Spring Boot标准应用属性
- JHipster应用属性
- Application-specific属性(特定应用属性)
Spring Boot标准应用属性
不同的属性可以在application.properties或application.yml文件中配置或控制台命令来改变
具体的会在SpringBoot部分中解释。
JHipster应用属性:
JHipster提供了特定的应用属性,这些属性是所有JHipster项目中的标准,但是某些只在你构建项目时选择了才有效,例如jhipster.cache.hazelcast关键字只有当你选择了Hazelcast作为2级Hibernate缓存时才有效。
这些属性使用io.github.jhipster.config.JHipsterProperties类来配置。
说明文档:
jhipster: # 用于JHipster异步函数调用的线程池 async: core-pool-size: 2 # 初始化池大小 max-pool-size: 50 # 最大池大小 queue-capacity: 10000 # 池队列容量 # HTTP配置 http: # V_1_1 for HTTP/1.1 or V_2_0 for HTTP/2. # 使用HTTP/2需要SSL 支持(见 Spring Boot "server.ssl" 配置) version: V_1_1 cache: # 用于 io.github.jhipster.web.filter.CachingHttpHeadersFilter timeToLiveInDays: 1461 # 静态内容默认缓存4年 # Hibernate二级缓存,用于CacheConfiguration cache: hazelcast: # Hazelcast configuration time-to-live-seconds: 3600 # 默认对象在缓存中保持1小时 backup-count: 1 # 对象备份数量 ehcache: # Ehcache配置 time-to-live-seconds: 3600 # 默认对象在缓存中保持1小时 max-entries: 100 # 每次缓存开启时对象的最大数量 # E-mail属性 mail: from: jhipster@localhost # 默认的e-mails发出地址 base-url: http://127.0.0.1:8080 # 在邮件中使用的应用的URL # Spring安全相关配置 security: remember-me: # JHipster对"记住我"机制的安全实现:基于会话的身份验证 # 安全key(对于你的应用是独有的且应保密) key: 0b32a651e6a65d5731e869dc136fb301b0a8c0e4 client-authorization: # 用于JHipster UAA验证 access-token-uri: # JHipster UAA服务器OAuth令牌的URL token-service-id: # 当前应用的ID client-id: # OAuth客户ID client-secret: # OAuth客户秘密 authentication: jwt: # JHipster指定JWT实现 secret: # JWT密钥 token-validity-in-seconds: 86400 # 令牌在24小时内有效 token-validity-in-seconds-for-remember-me: 2592000 # "记住我"令牌在30天内有效 oauth: # 用于JHipster OAuth 2对于MongoDB的特定实现 client-id: # OAuth客户ID client-secret: # OAuth客户秘密 token-validity-in-seconds: 1800 # 令牌在30分钟内有效 # Swagger配置 swagger: default-include-pattern: /api/.* title: JHipster API description: JHipster API documentation version: 0.0.1 terms-of-service-url: contact-name: contact-url: contact-email: license: license-url: # DropWizard Metrics配置,用于MetricsConfiguration metrics: jmx: # 作为JMX beans导出指标 enabled: true # JMX默认开启 # 将指标发送给Graphite服务器 # 使用"graphite" Maven配置文件以产生Graphite依赖 graphite: enabled: false # Graphite默认关闭 host: localhost port: 2003 prefix: jhipster # 将指标发送给Prometheus服务器 # 使用"prometheus" Maven配置文件以产生Prometheus依赖 prometheus: enabled: false # Prometheus默认关闭 endpoint: /prometheusMetrics logs: # 在日志中报告Dropwizard指标 enabled: false reportFrequency: 60 # 每秒报告的频度 # Logging配置,用于LoggingConfiguration logging: logstash: # 通过socket将日志提交给Logstash enabled: false # Logstash默认关闭 host: localhost # Logstash服务器URL port: 5000 # Logstash服务器端口 queue-size: 512 # 缓存日志的队列 spectator-metrics: # 在日志中报告Netflix Spectator指标 enabled: false # Spectator默认关闭 # Spring Social对Twitter/Facebook/Google验证的特定配置 social: redirect-after-sign-in: "/#/home" # 验证成功后的重定向URL # cross-origin resource sharing (CORS)默认关闭,去掉注释以开启 # 配置标准的org.springframework.web.cors.CorsConfiguration cors: allowed-origins: "*" allowed-methods: GET, PUT, POST, DELETE, OPTIONS allowed-headers: "*" exposed-headers: allow-credentials: true max-age: 1800 # JHipster应用首页左上角的丝带显示 ribbon: #逗号分隔显示丝带的配置文件列表 display-on-active-profiles: dev
Application-specific属性:
推荐使用自带的Spring Boot属性来生成应用,因为这就会允许应用的类型安全的配置和IDE的自动完成和文档化。
JHipster会在config包中生成一个已经配置过的ApplicationProperties类,并且已经在底部的application.yml、application-dev.yml、application-prod.yml中写入。你只需要编写自己特定的属性即可。