歡迎, 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