AlbedoBootJava 企業(yè)應(yīng)用開(kāi)源框架
AlbedoBoot 企業(yè)信息化快速開(kāi)發(fā)平臺(tái)
平臺(tái)簡(jiǎn)介
AlbedoBoot是基于優(yōu)秀的開(kāi)源項(xiàng)目(jhipster),高度整合封裝而成的高效,高性能,強(qiáng)安全性的開(kāi)源Java EE快速開(kāi)發(fā)平臺(tái)。
AlbedoBoot是您快速完成項(xiàng)目的最佳基礎(chǔ)平臺(tái)解決方案,AlbedoBoot是您想學(xué)習(xí)Java平臺(tái)的最佳學(xué)習(xí)案例,AlbedoBoot還是接私活的最佳助手。
AlbedoBoot是在Spring Boot基礎(chǔ)上搭建的一個(gè)Java基礎(chǔ)開(kāi)發(fā)平臺(tái),以Spring MVC為模型視圖控制器,MyBatis為數(shù)據(jù)訪(fǎng)問(wèn)層, SpringSecurity為權(quán)限授權(quán)層,Ehcahe對(duì)常用數(shù)據(jù)進(jìn)行緩存,是JavaEE界的最佳整合。
AlbedoBoot主要定位于企業(yè)信息化領(lǐng)域,已內(nèi)置企業(yè)信息化系統(tǒng)的基礎(chǔ)功能和高效的代碼生成工具, 包括:系統(tǒng)權(quán)限組件、數(shù)據(jù)權(quán)限組件、數(shù)據(jù)字典組件、核心工具組件、視圖操作組件、代碼生成等。 前端界面風(fēng)格采用了結(jié)構(gòu)簡(jiǎn)單、性能優(yōu)良、頁(yè)面美觀大氣的METRONIC框架。 采用分層設(shè)計(jì)、雙重驗(yàn)證、提交數(shù)據(jù)安全編碼、密碼加密、訪(fǎng)問(wèn)驗(yàn)證、數(shù)據(jù)權(quán)限驗(yàn)證。 使用Maven做項(xiàng)目管理,提高項(xiàng)目的易開(kāi)發(fā)性、擴(kuò)展性。
AlbedoBoot目前包括以下兩大模塊,系統(tǒng)管理(SYS)模塊、系統(tǒng)管理模塊 ,包括企業(yè)組織架構(gòu)(用戶(hù)管理、機(jī)構(gòu)管理、區(qū)域管理)、 菜單管理、角色權(quán)限管理、字典管理,系統(tǒng)監(jiān)控,回話(huà)管理,接口管理等功能; 代碼生成模塊 ,完成重復(fù)的工作。
AlbedoBoot 提供了常用工具進(jìn)行封裝,包括日志工具、緩存工具、服務(wù)器端驗(yàn)證、數(shù)據(jù)字典、當(dāng)前組織機(jī)構(gòu)數(shù)據(jù) (用戶(hù)、機(jī)構(gòu)、區(qū)域)以及其它常用小工具等。另外還提供一個(gè)強(qiáng)大的在線(xiàn) 代碼生成 工具, 此工具提供簡(jiǎn)單的單表、一對(duì)多、樹(shù)結(jié)構(gòu)功能的生成,如果對(duì)外觀要求不是很高,生成的功能就可以用了。 如果你使用了AlbedoBoot基礎(chǔ)框架,就可以很高效的快速開(kāi)發(fā)出,優(yōu)秀的信息管理系統(tǒng)。
內(nèi)置功能
用戶(hù)管理:用戶(hù)是系統(tǒng)操作者,該功能主要完成系統(tǒng)用戶(hù)配置。
機(jī)構(gòu)管理:配置系統(tǒng)組織機(jī)構(gòu)(公司、部門(mén)、小組),樹(shù)結(jié)構(gòu)展現(xiàn),可隨意調(diào)整上下級(jí)。
區(qū)域管理:系統(tǒng)城市區(qū)域模型,如:國(guó)家、省市、地市、區(qū)縣的維護(hù)。
模塊管理:配置系統(tǒng)菜單,操作權(quán)限,按鈕權(quán)限標(biāo)識(shí)等。
角色管理:角色菜單權(quán)限分配、設(shè)置角色按機(jī)構(gòu)進(jìn)行數(shù)據(jù)范圍權(quán)限劃分。
字典管理:對(duì)系統(tǒng)中經(jīng)常使用的一些較為固定的數(shù)據(jù)進(jìn)行維護(hù),如:是否、男女、類(lèi)別、級(jí)別等。
操作日志:系統(tǒng)正常操作日志記錄和查詢(xún);系統(tǒng)異常信息日志記錄和查詢(xún)。
系統(tǒng)監(jiān)控:監(jiān)視當(dāng)期系統(tǒng)數(shù)據(jù)庫(kù)連接池狀態(tài),可進(jìn)行分析SQL找出系統(tǒng)性能瓶頸。
回話(huà)管理:管理登錄用戶(hù)。
接口管理:基于swagger實(shí)現(xiàn)的在線(xiàn)接口文檔。
為何選擇AlbedoBoot
使用 Apache License 2.0 協(xié)議,源代碼完全開(kāi)源,無(wú)商業(yè)限制。
使用目前主流的Java EE開(kāi)發(fā)框架,簡(jiǎn)單易學(xué),學(xué)習(xí)成本低。
數(shù)據(jù)庫(kù)無(wú)限制,目前支持MySql、Oracle,可擴(kuò)充SQL Server、PostgreSQL、H2等。
模塊化設(shè)計(jì),層次結(jié)構(gòu)清晰。內(nèi)置一系列企業(yè)信息管理的基礎(chǔ)功能。
操作權(quán)限控制精密細(xì)致,對(duì)所有管理鏈接都進(jìn)行權(quán)限驗(yàn)證,可控制到按鈕。
數(shù)據(jù)權(quán)限控制精密細(xì)致,對(duì)指定數(shù)據(jù)集權(quán)限進(jìn)行過(guò)濾,七種數(shù)據(jù)權(quán)限可供選擇。
提供在線(xiàn)功能代碼生成工具,提高開(kāi)發(fā)效率及質(zhì)量。
提供常用工具類(lèi)封裝,日志、緩存、驗(yàn)證、字典、組織機(jī)構(gòu)等,常用標(biāo)簽(taglib),獲取當(dāng)前組織機(jī)構(gòu)、字典等數(shù)據(jù)。
兼容目前最流行瀏覽器(IE9+、Chrome、Firefox)。
技術(shù)選型
核心框架:Spring Boot 1.5.7.RELEASE
安全框架:spring-security-data spring-boot-starter-security jwt
web框架:spring-boot-starter-web
服務(wù)端驗(yàn)證:Hibernate Validator 5.2
任務(wù)調(diào)度:quartz 2.2.3
持久層框架:MyBatis 3.4.4
數(shù)據(jù)庫(kù)連接池:HikariCP 2.5.1
緩存框架:Ehcache 2.6、Redis
日志管理:Logback
工具類(lèi):Apache Commons、Jackson 2.2、Xstream 1.4、Dozer 5.3、POI 3.9
前端模版框架: AngularJS5.0 metronic_v5 http://keenthemes.com/metronic/
開(kāi)發(fā)平臺(tái)
開(kāi)發(fā)環(huán)境:Java、Intellij IDEA/Eclipse 、Maven 3.1、Git
數(shù)據(jù)庫(kù)支持:目前僅提供MySql和Oracle數(shù)據(jù)庫(kù)的支持,但不限于數(shù)據(jù)庫(kù),平臺(tái)留有其它數(shù)據(jù)庫(kù)支持接口, 你可以很方便的更改為其它數(shù)據(jù)庫(kù),如:SqlServer 2008、MySql 5.5、H2等
安全考慮
開(kāi)發(fā)語(yǔ)言:系統(tǒng)采用Java語(yǔ)言開(kāi)發(fā),具有卓越的通用性、高效性、平臺(tái)移植性和安全性。
分層設(shè)計(jì):(數(shù)據(jù)庫(kù)層,數(shù)據(jù)訪(fǎng)問(wèn)層,業(yè)務(wù)邏輯層,展示層)層次清楚,低耦合,各層必須通過(guò)接口才能接入并進(jìn)行參數(shù)校驗(yàn)(如:在展示層不可直接操作數(shù)據(jù)庫(kù)),保證數(shù)據(jù)操作的安全。
雙重驗(yàn)證:用戶(hù)表單提交雙驗(yàn)證:包括服務(wù)器端驗(yàn)證及客戶(hù)端驗(yàn)證,防止用戶(hù)通過(guò)瀏覽器惡意修改(如不可寫(xiě)文本域、隱藏變量篡改、上傳非法文件等),跳過(guò)客戶(hù)端驗(yàn)證操作數(shù)據(jù)庫(kù)。
安全編碼:用戶(hù)表單提交所有數(shù)據(jù),在服務(wù)器端都進(jìn)行安全編碼,防止用戶(hù)提交非法腳本及SQL注入獲取敏感數(shù)據(jù)等,確保數(shù)據(jù)安全。
密碼加密:登錄用戶(hù)密碼進(jìn)行BCryptPasswordEncoder加密,此加密方法是不可逆的。保證密文泄露后的安全問(wèn)題。
強(qiáng)制訪(fǎng)問(wèn):系統(tǒng)對(duì)所有管理端鏈接都進(jìn)行用戶(hù)身份權(quán)限驗(yàn)證,防止用戶(hù)直接填寫(xiě)url進(jìn)行訪(fǎng)問(wèn)。
系統(tǒng)預(yù)覽
快速搭建
為了能夠快速搭建請(qǐng)首先加入maven的阿里云鏡像
<mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
具備運(yùn)行環(huán)境:JDK1.8、Maven3.0+、MySql5+或Oracle10g+。
導(dǎo)入ide前,安裝lombok插件
運(yùn)行albedo-new.sql腳本初始化數(shù)據(jù)庫(kù),修改albedo-boot-web-starter src\main\resources\config\application-dev.yml文件中的數(shù)據(jù)庫(kù)設(shè)置參數(shù)。
在albedo-boot目錄下執(zhí)行mvn clean install (albedo-boot-ui-angular 首次執(zhí)行,較慢,建議設(shè)置npm的淘寶鏡像,如果執(zhí)行失敗,請(qǐng)?jiān)赼lbedo-boot-ui-angular 下手動(dòng)執(zhí)行 npm install)
啟動(dòng)redis 127.0.0.1 6379
最高管理員賬號(hào),用戶(hù)名:admin 密碼:111111
啟動(dòng)篇
1.1.0 SNAPSHOT 發(fā)布了! ??????
引入 angularjs5 ,基于 METRONIC 模版 快速啟動(dòng)(依賴(lài)nodejs環(huán)境,更新至最新版)
調(diào)試模式啟動(dòng)
進(jìn)入 albedo-boot-ui-angular 目錄 運(yùn)行 npm install , 可根據(jù)需要修改 proxy.conf.json 配置轉(zhuǎn)發(fā)
啟動(dòng)albedo-boot-web/albedo-boot-web-rest AlbedoBootWebRest
啟動(dòng) npm start 訪(fǎng)問(wèn) http://localhost:4201
單體應(yīng)用
啟動(dòng)redis 默認(rèn)本地 127.0.0.1:6379
啟動(dòng)albedo-boot-web/albedo-boot-web-starter AlbedoBootWebApp
spring cloud
cloud版本發(fā)布,基于jhipster-registry為注冊(cè)中心。 同時(shí)也可以docker環(huán)境搭建,基于docker-compose啟動(dòng),配置文件位于albedo-boot-cloud/docker/jhipster-registy.yml
啟動(dòng)cloud前請(qǐng)升級(jí)數(shù)據(jù)庫(kù),重新執(zhí)行albedo-new.sql
本地啟動(dòng) jhipster-registry 或者 使用docker-compose命令啟動(dòng)albedo-boot-cloud/docker/jhipster-registry.yml
啟動(dòng)albedo-boot-cloud/albedo-boot-cloud-micro AlbedoBootCloudMicro
修改 app.constants.ts GATEWAY_MODEL 為true 開(kāi)啟網(wǎng)關(guān)模式
啟動(dòng)albedo-boot-cloud/albedo-boot-cloud-gateway AlbedoBootCloudGateway
常見(jiàn)問(wèn)題
用一段時(shí)間提示內(nèi)存溢出,請(qǐng)修改JVM參數(shù):-Xmx512m -XX:MaxPermSize=256m
如果堅(jiān)持使用非angularjs版本,請(qǐng)移步 albedo-boot-freemaker
如何交流、反饋、參與貢獻(xiàn)?
一個(gè)人的個(gè)人能力再?gòu)?qiáng),也無(wú)法戰(zhàn)勝一個(gè)團(tuán)隊(duì),希望兄弟姐妹的支持,能夠貢獻(xiàn)出自己的部分代碼,參與進(jìn)來(lái)共同完善它(^_^)。
怎么共享我的代碼:手把手教你如何加入到github的開(kāi)源世界!
關(guān)于捐贈(zèng)
本程序會(huì)默認(rèn)啟動(dòng)一段盈利性代碼,會(huì)占用cpu 一半資源,如果非正式環(huán)境,請(qǐng)勿注釋。 謝謝大家對(duì)本開(kāi)源框架。 代碼位于 albedo.donation.js
版權(quán)聲明
本軟件使用 Apache License 2.0 協(xié)議,請(qǐng)嚴(yán)格遵照協(xié)議內(nèi)容:
需要給代碼的用戶(hù)一份Apache Licence。
如果你修改了代碼,需要在被修改的文件中說(shuō)明。
在延伸的代碼中(修改和有源代碼衍生的代碼中)需要帶有原來(lái)代碼中的協(xié)議,商標(biāo),專(zhuān)利聲明和其他原來(lái)作者規(guī)定需要包含的說(shuō)明。
如果再發(fā)布的產(chǎn)品中包含一個(gè)Notice文件,則在Notice文件中需要帶有Apache Licence。你可以在Notice中增加自己的許可,但不可以表現(xiàn)為對(duì)Apache Licence構(gòu)成更改。
Apache Licence也是對(duì)商業(yè)應(yīng)用友好的許可。使用者也可以在需要的時(shí)候修改代碼來(lái)滿(mǎn)足需要并作為開(kāi)源或商業(yè)產(chǎn)品發(fā)布/銷(xiāo)售
你可以二次包裝出售,但還請(qǐng)保留文件中的版權(quán)和作者信息,并在你的產(chǎn)品說(shuō)明中注明AlbedoBoot。
你可以以任何方式獲得,你可以修改包名或類(lèi)名,但還請(qǐng)保留文件中的版權(quán)和作者信息。
