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开发进一步展开介绍。