Springboot min -Solon 詳解系列文章:
Springboot mini - Solon詳解(一)- 快速入門
Springboot mini - Solon詳解(二)- Solon的核心
Springboot mini - Solon詳解(三)- Solon的web開發html
在上篇中咱們成功運行了一個簡單的web應用;本篇將對它的啓動過程、擴展體系和應用屬性配置進行介紹。java
瞭解這個過程很是之重要,尤爲是有興致開發插件的同窗:你的插件在運行以前,配置已經存在了,但java bean仍未加載。git
Solon 的插件也能夠叫擴展組件,至關於Spring 的 starter。Solon已經提供了大量的基礎插件,但對第三方的框架適配目前較少。github
插件 | 說明 |
---|---|
boot插件:: | 說明 |
org.noear:solon.boot.jlhttp* | boot插件,對jlhttp 適配,提供http 服務(不自帶session state) |
org.noear:solon.boot.jetty* | boot插件,對jetty 適配,提供http 服務(網友@khb提供) |
org.noear:solon.boot.undertow* | boot插件,對undertow 適配,提供http 服務(網友@tyk提供) |
org.noear:solon.boot.websocket | boot插件,對java-websocket 適配,提供websocket 服務 |
org.noear:solon.extend.jetty.jsp | 擴展插件,爲jetty 添加jsp 支持(不建議使用jsp)(網友@khb提供) |
org.noear:solon.extend.undertow.jsp | 擴展插件,爲undertow 添加jsp 支持(不建議使用jsp)(網友@tyk提供) |
SocketD boot插件:: | 說明 |
org.noear:solon.boot.socketd.jdksocket | boot插件,對jdk-socket 適配,提供socketd 服務 |
org.noear:solon.boot.socketd.netty | boot插件,對netty 適配,提供socketd 服務 |
org.noear:solon.boot.socketd.smartsocket | boot插件,對smartboot-socket 適配,提供socketd 服務 |
靜態文件支持插件:: | 說明 |
org.noear:solon.extend.staticfiles | 擴展插件,添加靜態文件支持(監視 resources/static 文件夾) |
切面支持插件:: | 說明 |
org.noear:solon.extend.aspect | 擴展插件,添加Dao、Service註解支持;進而支持事務和緩存註解 |
數據操做支持插件:: | 說明 |
org.noear:solon.extend.data | 擴展插件,實現事務和緩存的註解支持 |
驗證操做支持插件:: | 說明 |
org.noear:solon.extend.validation | 擴展插件,實現驗證類註解支持 |
Yaml配置支持插件:: | 說明 |
org.noear:solon.extend.properties.yaml | 擴展插件,添加yml配置文件支持 |
定時任務支持插件:: | 說明 |
org.noear:solon.extend.schedule | 擴展插件,實現定時任務支持(和 cron4j-solon-plugin 風格不一樣) |
遠程關閉支持插件:: | 說明 |
org.noear:solon.extend.stop | 擴展插件,實現遠程關閉支持 |
Session插件:: | 說明(可將boot插件的session state服務,自動換掉) |
org.noear:solon.extend.sessionstate.local | 擴展插件,本地session |
org.noear:solon.extend.sessionstate.redis | 擴展插件,分佈式session (其於redis 構建) |
序列化插件:: | 說明 |
org.noear:solon.serialization.fastjson* | 序列化插件,對 fastjson 適配,提供json 視圖輸出 或 序列化輸出 |
org.noear:solon.serialization.snack3* | 序列化插件,對 snack3 適配,提供json 視圖輸出 或 序列化輸出 |
org.noear:solon.serialization.hession* | 序列化插件,對 hession 適配,提供 hession 序列化輸出 |
org.noear:solon.serialization.jackson | 序列化插件,對 jackson 適配,提供json 視圖輸出 或 序列化輸出 |
視圖插件:: | 說明(可置多個視圖插件) |
org.noear:solon.view.freemarker* | 視圖插件,對 freemarker 適配,提供html 視圖輸出 |
org.noear:solon.view.jsp | 視圖插件,對 jsp 適配,提供html 視圖輸出 |
org.noear:solon.view.velocity | 視圖插件,對 velocity 適配,提供html 視圖輸出 |
org.noear:solon.view.thymeleaf | 視圖插件,對 thymeleaf 適配,提供html 視圖輸出 |
org.noear:solon.view.beetl | 視圖插件,對 beetl 適配,提供html 視圖輸出 |
org.noear:solon.view.enjoy | 視圖插件,對 enjoy 適配,提供html 視圖輸出 |
rpc client:: | 說明 |
org.noear:nami | 作爲 solon rpc client 使用(支持http, socket, web socket) |
外部框架適配:: | 說明 |
org.noear:beetlsql-solon-plugin | beetlsql 適配插件 |
org.noear:cron4j-solon-plugin | cron4j 適配插件 |
org.noear:dubbo-solon-plugin | dubbo 適配插件 |
org.noear:feign-solon-plugin | feign 適配插件 |
org.noear:hasor-solon-plugin | hasor 適配插件 |
org.noear:mybatis-solon-plugin | mybatis 適配插件 |
org.noear:mybatis-sqlhelper-solon-plugin | mybatis 分頁適配插件 |
org.noear:quartz-solon-plugin | quartz 適配插件 |
org.noear:weed3-solon-plugin | weed3 適配插件 |
怎麼使用?直接在pom.xml中添加依賴便可。web
Solon項目會使用一個全局的屬性配置文件 application.properties 或者是 application.yml,在resources目錄下。redis
Solon會根據在pom.xml中依賴的jar包進行自動配置,當咱們要對這些jar包對應的框架進行配置又該怎麼辦呢?沒錯,能夠在全局配置文件(application.properties 或者是 application.yml)中進行配置,如http server的端口配置等。spring
//資源路徑說明(不用配置;也不能配置) resources/application.properties(或 application.yml) 爲應用配置文件 resources/static/ 爲靜態文件根目標 resources/WEB-INF/view/ 爲視圖模板文件根目標(支持多視圖共存) //調試模式: 啓動參數添加:-debug=1 或 --debug=1
server.port: 8080
server.request.maxRequestSize: 2Mb
server.session.timeout: 3600 #單位:s
原則上不要加這些配置,更不要修改;想用哪一個模板,加哪一個組件便可(有利於簡化套路)sql
#默認的配置(不須要改配置,除非要修改) solon.view.mapping.htm: BeetlRender #簡寫 solon.view.mapping.shtm: EnjoyRender solon.view.mapping.ftl: FreemarkerRender #默認的模板引擎 solon.view.mapping.jsp: JspRender solon.view.mapping.html: ThymeleafRender solon.view.mapping.vm: org.noear.solon.view.velocity.VelocityRender #引擎全名(通常用簡寫)
當添加org.noear:solon.extend.sessionstate.redis組件時,即切換爲分佈式session,須要如下配置了(它基於redis包裝;也能夠基於接口本身造一個):json
# 當使用 sesstionstate.redis 的配置 server.session.state.redis.server: 127.0.0.1:6379 server.session.state.redis.password: xxx server.session.state.redis.db: 31 server.session.state.redis.maxTotaol: 200
Solon默認沒有對接外部日誌框架,而是經過事件總線接收應用內全部的異常。緩存
Solon.start(...).onEerror(err-> ..)
ctx.redirect("http://www.noear.org"); //or Context.current().redirect("http://www.noear.org");
只要名字不衝突,隨便加。例:
user.name: "lie lai"
user.name: "lie lai" message: "${user.name} 你好!" #這個不支持(有須要的時候,本身替換)
//註解模式 @Inject("${user.name}") //代碼模式 Solon.cfg().get("user.name")
這個功能用起來會很方便,簡化很多的代碼編寫。
//註解模式 // @Configuration // Configuration或別的類註解,均可 public class test{ //注入字段,在任何託管Bean裏有效 // @Inject("${user}") UserModel user; //注入參數,只在@Configuration類有效 // @Bean public Xxxxx buildXxxx(@Inject("${test.db1}") HikariDataSource dataSource){ } } //代碼模式 UserModel user = Solon.cfg().getBean("user", UserModel.class); HikariDataSource dataSource = Solon.cfg().getBean("test.db1", HikariDataSource.class);
本篇到此結束,主要介紹了Solon中幾個的問題:1,啓動過程;2,擴展體系,3,應用屬性配置,同時解決上篇中的幾個問題,從下篇開始,將針對Solon的web開發進一步展開介紹。