輕量級 Java 基礎(chǔ)開發(fā)框架座享,Solon & Solon Cloud 1.5.40 發(fā)布

Solon 已有120個生態(tài)擴(kuò)展插件帝嗡,此次版本以細(xì)節(jié)打磨為主:

  • 增加 mybatisplus-solon-plugin 插件
    //至此,Solon 已完成國內(nèi)外主流的5個ORM框架插件適配
    
  • 插件 solon.validation浮定,注解 Whitelist相满、NotBlacklist、Logined 增加可繼承支持
    //
    //Solon 具體輕量而完整的驗(yàn)證能力及驗(yàn)證擴(kuò)展機(jī)制
    //
    @Logined
    @Valid
    public class ApiBaseLogined {
    }
    
    
    @Controller
    public class DemoController extends ApiBaseLogined {
        @Numeric({"id"})
        @NotEmpty({"id","name","description"})
        @Mapping("addArchive")
        public void addArchive(Long id, String name, String description){
            //...
        }
        
        @Mapping("addArchiveItem")
        public void addArchiveItem(@Validated ItemModel item){
            //...
        }
    }
    
  • 調(diào)整 路由規(guī)則桦卒,帶 * 號的印射關(guān)系排到后面
    @Controller
    public class DemoController {
        @Mapping("/*")
        public void all(){
        }
        
        @Mapping("/add") //相對于*立美,具有優(yōu)先匹配權(quán)
        public void add(){ 
        }
    }
    
  • 調(diào)整 通訊端口被占用時,改為拋出異常
  • 國際化 增加 Content-Language 頭信息支持方灾,讓國際化控制更友好
  • 國際化 增加 上下文的 Locale 注入支持
    @Mapping("/demo")
    public void demo(Locale locale){
    
    } 
    
  • 國際化 增加 I18nService 類
    @Controller
    public class DemoController {
        I18nService i18nService = new I18nService("i18n.user");
    
        @Mapping("/demo")
        public String demo(Locale locale){
            return i18nService.get(locale, "user.name");
        }
    }
    
  • 調(diào)整 solon.data.cache.CacheServiceDefault 內(nèi)部類建蹄,更名為 LocalCacheService
    @Configuration
    public class Config {
        @Bean
        public CacheService cache(){
            return new LocalCacheService();
        }
    }
    
  • 插件 solon.serialization.hession 更名為:插件 solon.serialization.hessian
  • 調(diào)整序列化渲染方案,不再受accept header影響
  • 調(diào)整 驗(yàn)證器 Numeric 裕偿,空為通過(是否充許為空由@NotEmpty處理)
  • 調(diào)整 Aop.get(type) 改為 return bean || null
  • 取消 Aop.getOrNull(type) 接口洞慎,由 Aop.get(type)
  • 新增 Aop.getOrNew(type) return bean; 替代舊的 Aop.get(type)
  • 接口 CloudFileService 增加 delete 方法
    @Controller
    public class DemoController {
        @Bean
        public void put(UploadedFile file){
            //阿里云 oss  或 AWS s3 或 七牛 圖片上傳(使用 Solon Cloud 接口會很簡便)
            CloudClient.file().putStream(Utils.guid(), file.content, "image/jpg");
        }
    }
    
  • 修復(fù) solon.extend.staticfiles 會出現(xiàn) .htm 的mine 匹配 .xhtm 的情況
  • 優(yōu)化不啟用緩存的控制(基于代碼控制,可根據(jù)啟動參數(shù)變化)
  • 優(yōu)化不啟用事務(wù)的控制
  • 調(diào)整緩存標(biāo)簽參數(shù)使用策略嘿棘,缺時出異常方便用者發(fā)現(xiàn)
  • 增加@Inject("${xx.xx.ary}") List<String> ary 的支持
    @Controller
    public class DemoController {
        @Inject("${project.linkes}")
        List<String> linkes;
        
        @Inject("${project.details}")
        Map<String,String> details;
    }
    
  • 修復(fù) Props 在 forEach 時劲腿,可能出現(xiàn)重復(fù)key的問題

關(guān)于 Solon

Solon 是一個輕量的Java基礎(chǔ)開發(fā)框架。強(qiáng)調(diào)鸟妙,克制 + 簡潔 + 開放的原則焦人;力求挥吵,更小、更快花椭、更自由的體驗(yàn)忽匈。支持:RPC、REST API矿辽、MVC丹允、Job、Micro service袋倔、WebSocket雕蔽、Socket 等多種開發(fā)模式。短小而精悍宾娜!

Solon Cloud 是一系列的接口標(biāo)準(zhǔn)和配置規(guī)范萎羔,算是 Solon 的分布式開發(fā)套件方案。

快速了解 Solon 的材料:

《Solon 特性簡集碳默,相較于 Springboot 有什么區(qū)別贾陷?》

《Solon Cloud 分布式服務(wù)開發(fā)套件清單,感覺受與 Spring Cloud 的不同》

《Solon 的想法與架構(gòu)筆記》

所謂更兄龈:

內(nèi)核0.1m髓废,最小的接口開發(fā)單位0.2m(相較于 Dubbo、Springboot 的依賴包该抒,小到可以乎略不計(jì))

所謂更快:

本機(jī)http helloworld測試慌洪,Qps可達(dá)12萬之多〈毡#可參考:《helloworld_wrk_test

所謂更自由:(代碼操控自由)

// 除了注解模式之外冈爹,還可以按需手動
//
//手動獲取配置(Props 為 Properties 增強(qiáng)版)
Props db = Solon.cfg().getProp("db");

//手動獲取容器里的Bean
UserService userService = Aop.get(UserService.class);

//手動監(jiān)聽http post請求
Solon.global().post("/user/update", x-> userService.updateById(x.paramMap()));

//手動添加個RPC服務(wù)
Solon.global().add("/rpc/", HelloService.class, true);

//手動獲取一個RPC服務(wù)消費(fèi)端
HelloService helloService = Nami.builder().create(HelloService.class);

//手動為容器添加組件
Aop.wrapAndPut(DemoService.class);

Hello world:

//Handler 模式:
public class App{
    public static void main(String[] args){
        SolonApp app = Solon.start(App.class,args);
        
        app.get("/",(c)->c.output("Hello world!"));
    }
}

//Controller 模式:(mvc or rest-api)
@Controller
public class App{
    public static void main(String[] args){
        Solon.start(App.class,args);
    }
  
    //限定 put 方法類型
    @Put
    @Mapping("/")
    public String hello(String name){
        return "Hello " + name;
    }
}

//Remoting 模式:(rpc)
@Mapping("/")
@Remoting
public class App implements HelloService{
    public static void main(String[] args){
        Solon.start(App.class,args);
    }

    @Override
    public String hello(){
        return "Hello world!";
    }
}

附:項(xiàng)目地址

附:入門示例

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市欧引,隨后出現(xiàn)的幾起案子频伤,更是在濱河造成了極大的恐慌,老刑警劉巖芝此,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件憋肖,死亡現(xiàn)場離奇詭異,居然都是意外死亡婚苹,警方通過查閱死者的電腦和手機(jī)岸更,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來膊升,“玉大人怎炊,你說我怎么就攤上這事。” “怎么了评肆?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵赞咙,是天一觀的道長。 經(jīng)常有香客問我糟港,道長,這世上最難降的妖魔是什么院仿? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任秸抚,我火速辦了婚禮,結(jié)果婚禮上歹垫,老公的妹妹穿的比我還像新娘剥汤。我一直安慰自己,他們只是感情好排惨,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布吭敢。 她就那樣靜靜地躺著,像睡著了一般暮芭。 火紅的嫁衣襯著肌膚如雪鹿驼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天辕宏,我揣著相機(jī)與錄音畜晰,去河邊找鬼。 笑死瑞筐,一個胖子當(dāng)著我的面吹牛凄鼻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播聚假,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼块蚌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了膘格?” 一聲冷哼從身側(cè)響起峭范,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瘪贱,沒想到半個月后虎敦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡政敢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年其徙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喷户。...
    茶點(diǎn)故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡唾那,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情闹获,我是刑警寧澤期犬,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站避诽,受9級特大地震影響龟虎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜沙庐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一鲤妥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拱雏,春花似錦棉安、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至鹊汛,卻和暖如春蒲赂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背刁憋。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工凳宙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人职祷。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓氏涩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親有梆。 傳聞我的和親對象是個殘疾皇子是尖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 16宿命:用概率思維提高你的勝算 以前的我是風(fēng)險厭惡者,不喜歡去冒險泥耀,但是人生放棄了冒險饺汹,也就放棄了無數(shù)的可能。 ...
    yichen大刀閱讀 6,059評論 0 4
  • 公元:2019年11月28日19時42分農(nóng)歷:二零一九年 十一月 初三日 戌時干支:己亥乙亥己巳甲戌當(dāng)月節(jié)氣:立冬...
    石放閱讀 6,888評論 0 2
  • 今天上午陪老媽看病痰催,下午健身房跑步兜辞,晚上想想今天還沒有斷舍離,馬上做夸溶,衣架和旁邊的的布衣架逸吵,一看亂亂,又想想自己是...
    影子3623253閱讀 2,916評論 1 8