欢迎, Java热爱者

Spring Boot + Angular/React生成器

https://www.jhipster.tech

请使用键盘右键继续 >

演示使用

  • 左/右键浏览每章节主幻灯片
  • 上/下键浏览每章节所有幻灯片
  • ESC键浏览所有幻灯片

概述

现代Web应用开发

现代Web应用

用户需求升级. 用户厌倦了迟钝、非自适应的Web应用. 他们期待:

  • 精美的设计
  • 无需等待页面加载
  • 页面局部动态更新

我们需要最新的HTML5/CSS3/JavaScript技术

开发人员工作效率

Web应用应该被快速交付.

发布应用花费上一分钟也无法接受


我们需要使用正确的工具!

生产就绪的软件

现代的网站需要处理大量并发用户

所有大量使用RESTful的应用将会让后端压力剧增


我们需要稳健、可扩展的高性能服务

我们的目标就是解决这些问题


  • 精美的前端, 使用最新的HTML5/CSS3/JavaScript框架
  • 稳健高质量的后端, 使用最新的Java/缓存/数据访问技术
  • 所有功能自动集成,同时兼顾安全性和性能
  • 优秀的开发工具, 带来最大的效率提升

前端技术

Yeoman, Webpack, Angular, React, Bootstrap

NPM

  • 快速可靠的依赖管理
  • 用于安装和运行所有前端工具
                            npm install -g generator-jhipster
                        

Yeoman

Yeoman提供应用生成器

  • 上百个生成器提供
  • 大部分面向JavaScrpt前端应用生成
  • 高分生成器高质量
                            jhipster
                        

Webpack

前端打包工具

  • 编译, 最小化, 优化前端
  • 编译和热重载Angular/React + TypeScript的必要工具
  • 高效的前端生产环境编译

BrowserSync

应用更新热重载

  • 当代码修改自动刷新浏览器
  • 实时同步多个浏览器, 所以变更可以被快速查看
                            npm start
                        

Jest

Jest在JavaScript代码上运行单元测试

  • 使用jsdom, 虚拟DOM技术
  • 快捷, 而且可以一直后台运行
                            npm test
                        

Angular与React

最流行的2个JavaScript框架

  • JHipster同时支持Angular和React
  • 强大 & 容易学习
  • 数据绑定, 表单验证, 国际化... 所有功能开箱即用

Bootstrap

优秀的CSS/JavaScript自适应Web应用框架

  • 所有常用的CSS和HTML元素
  • 丰富的JavaScript组件: 菜单, 导航栏, 下拉框, 警告...
                            
Hello, world!

后端技术

Maven, Spring, Spring MVC REST, Spring Data JPA, Netflix OSS

Maven | Gradle

最受欢迎的Java打包工具

  • 广为人知, 预定义的目录和目标
  • 主流IDE集成
  • 丰富的插件生态, 包括Spring Boot和Yeoman
                            
./mvnw spring-boot:run
                            
                            
./gradlew bootRun
                            
                        

Spring Boot

Spring是Java应用的默认标准

  • 控制反转, 切面编程和抽象简化应用编码工作
  • 快速、轻量而且非常强大 当需要的时候
  • Spring Boot提供开箱即用的配置
  • 热重载应用
                            
@Service
@Transactional
public class UserService {

    @Autowired
    private UserRepository userRepository;

}
                            
                        

Netflix OSS

Netflix OSS为微服务框架提供了优秀的工具集

  • Eureka - 用于服务注册, 提供负载均衡与故障转移.
  • Zuul - 提供动态路由,监控,安全等边缘服务
  • Ribbon - 提供软负载均衡

Liquibase

简化Database变更

  • 负责处理数据库的结构变更
  • 良好兼容Spring和JPA
  • 需要对数据库和ORM有一定理解

JPA

Java标准的ORM规范

  • Hibernate的实现规范
  • 完备、优秀的特性集
  • 对于新手来说仍然很复杂!
                            
@Entity
public class User implements Serializable {

    @Id
    private String login;

}
                            
                        

Spring Data JPA

在JPA之上添加了许多语法糖

  • 自动创建JPA repositories
  • 删除了许多冗余代码
                            
public interface PersistenceAuditEventRepository extends JpaRepository<PersistentAuditEvent, String> {

    List<PersistentAuditEvent>
        findByPrincipalAndAuditEventDateGreaterThan(String principal, LocalDateTime after);

}
                            
                        

MongoDB

可扩展的NoSQL

  • 替代SQL数据库和JPA
  • 相似的编程风格: Spring Data MongoDB和Spring Data JPA工作流程一致
  • 更具扩展性, 易用

Couchbase

可扩展的NoSQL

  • 替代SQL数据库和JPA
  • 相似的编程风格: Spring Data MongoDB和Spring Data JPA工作流程一致
  • 更具扩展性, 易用

Cassandra

可扩展的NoSQL

  • 替代SQL数据库和JPA的第二个选择
  • 线性可扩展性和高可用性
  • 极致的性能表现和低延迟, 适用于关键型应用

缓存

缓存是性能之王

  • Ehcache是使用最广的解决方案
  • HazelCast是一个不错的选择, 支持集群!
  • Hibernate二级缓存或Spring Caching Abstraction
                            
@Entity
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class User implements Serializable {

}
                            
                        

Spring Security

强悍的安全框架

  • 领先的工具,广泛应用于所有行业
  • 安全加固URL和Java代码(Spring Beans)
  • 可与有状态(cookie)和无状态(OAuth2 / JWT)Web应用程序体系结构一起使用

Spring MVC REST

Java中最优秀的REST框架

  • 完善、高性能的REST支持
  • 优秀的Spring和测试支持
                            
@RestController
public class AccountResource {
    @PostMapping("/account")
    public void saveAccount(@RequestBody UserDTO userDTO) {
        userService.updateUserInformation(userDTO);
    }
}
                            
                        

Thymeleaf

服务端模板

  • 当单页应用不适用时候
  • 代替JSP和JSTL, 这两个已经过时被弃用了
  • 为Web设计师提供优秀的模板
                            

Hello, world

监控

基于Metrics的生产环境适用监控

  • 监控JVM, 应用服务器, Spring beans, 缓存等等!
  • JMX或Graphite报表
                            
@Timed
public void saveAccount(@RequestBody UserDTO userDTO) {
    userService.updateUserInformation(userDTO);
}
                            
                        

云部署

抵达云端!

  • 无论在内部还是云端, 应用都应易于部署
  • 为领先的云提供商, 像Cloud Foundry, Heroku and Amazon Web Services, 提供专用工具和部署选项

认识JHipster

为什么要鼓吹?

你说鼓吹?


截至当前(2018三月), JHipster已经取得:

  • 417贡献者, 包括21名核心成员
  • 9,891个GitHub点赞和2,180份克隆
  • 100w+安装
  • 依然在快速进化

为什么?

我们见识过很多很酷的技术

  • Webpack和Maven可以交个朋友吗?
  • Angular和Spring MVC REST可以交个朋友吗?
  • Netflix OSS和Spring可以交个朋友吗?
  • 我们可以向你保证所有组件都完美的融合在一起, 包括安全、缓存和监控, 这并不容易...

JHIPSTER使一切都融合

  • JHipster使用所有这些技术创建了一个完整的工作应用程序
  • 所有东西都可以开箱即用
  • 您的Webpack任务非常适合您的Maven目标!
  • 您已经有了Docker配置,可以使所有操作顺利运行!

但是,还有更多!

  • "entity" 子生成器从数据库到Angular生成完整的JPA实体
  • "import-jdl" 使用JDL Studio生成复杂的实体模型
  • "service" 子生成器生成Spring业务服务
  • "languages" 子生成器为i18n添加语言
  • 得到Spring Security的强大支持:Ajax端点,安全的“记住我”,审计...
  • 使用Metrics提供的出色监控页面

还没有结束,还有更多!

  • 完美支持创建微服务和网关
  • JHipster Registry (Netflix Eureka + Spring cloud config server)支持开箱即用
  • 基于ELK的JHipster Console(Elasticsearch + Logstash + Kibana)监控开箱即用
  • 很好的支持Docker
  • 额外的JHipster 模块带来更多的特性

生产环境适用

  • 带有GZipping和HTTP缓存头的特定Spring配置文件
  • 通过Webpack优化和缩小TypeScript和CSS
  • 可执行或标准WAR文件,已启用监控
  • 用于自动部署到Cloud Foundry,Heroku和AWS的子生成器
  • "docker-compose"子生成器,生成用于将微服务部署到生产中的Docker配置

构建第一个应用

10分钟教程

安装Yeoman

                            
npm install -g yo
npm install -g generator-jhipster
                            
                        

创建一个应用

然后使用内置的Maven代理运行
(应用会自动执行热重载)

                            
jhipster
./mvnw
                            
                        

前端实时重载

Webpack和Browsersync提供了前端代码(HTML, CSS, TypeScript)的实时重载特性. 修改任何文件都会触发浏览器的自动刷新:

                            
npm start
                            
                        

添加一个实体

                            
jhipster entity Foo
                            
                        

在生产环境运行

(使用Docker部署数据库)

                            
./mvnw -Pprod package
docker-compose -f src/main/docker/mysql.yml up -d
java -jar target/*.war
                            
                        

感谢你的关注

https://www.jhipster.tech