Springboot min -Solon 详解系列文章:
Springboot mini - Solon详解(一)- 快速入门
Springboot mini - Solon详解(二)- Solon的核心
Springboot mini - Solon详解(三)- Solon的web开发html
最近号称 Springboot mini 的 Solon框架,得空搞了一把,发觉Solon确实好用,小巧而快速。那Solon究竟是什么,又是怎么好用呢?java
Solon是参考Spring boot 和 Javalin 而设计。吸收了二者的的优势,避开了不少繁重的设计,使其支持http, websocket, socket 三种通信信号接入。Solon 2M便可支撑起普通的mvc开发了,0.1秒就能够完成启动;相对于言,Spring boot 的一个普通mvc项目,基本上20M起步,启动要3秒以上,并且qps也弱了不少。git
整体来讲,Solon 有着相似于 Spring boot的开发体验;故而号称Springboot mini。github
项目源码:https://gitee.com/noear/solonweb
优势spring
缺点数据库
使用Solon,能够零配置就让你的项目快速运行起来,彻底使用代码和注解取代配置。使用java代码方式能够更好的理解你配置的Bean,下面就先来看看两个最基本的注释:springboot
Solon 的java配置方式是经过@Configuration 和 @Bean这两个注释实现的(没有xml方案):websocket
@Configuration public class SolonConfig { @Bean public UserDao getUserDao() { return new UserDao(); } }
该示例将经过java配置方式配置Component,实现Solon IOC功能。架构
下面是一个简单的模拟从数据库获取User数据的Dao类(使用了@Component注解,说明它将交给Solon容器管理)。
@Component public class UserDao { public List<String> queryUserList() { //为省事儿,此处不操做数据库 List<String> list = new ArrayList<>(); for (int i = 0; i < 10; i++) { list.add("User " + i); } return list; } }
而后是一个最最多见的Service,经过注入UserDao,使用UserDao的方法获取用户数据。
@Component public class UserService { @Inject UserDao userDao; public void getUserList() { List<String> list = userDao.queryUserList(); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } } }
接下来就是启动Solon的容器服务, 而后从容器中拿到UserService,并调用其获取用户数据的方法,代码以下:
public class Test { public static void main(String[] args) { //启动容器服务 Solon.start(Test.class, args); //或经过Aop对象获取托管的Bean(或者注解方式) // UserService userService = Aop.get(UserService.class); userService.getUserList(); } }
像普通的java程序同样,直接运行Test类中的main方法便可在控制台看到用户数据输出了。
能够发现和以往的Spring boot 很像;又有点不同,尤为是手写AOP模式。
经过上面的示例,咱们已经知道了Solon的java配置方式是怎么回事了,那接下来便正式开始使用Solon来开发咱们的第一个web应用了.
设置solon的parent
<parent> <groupId>org.noear</groupId> <artifactId>solon-parent</artifactId> <version>1.2.8</version> </parent>
设置solon的parent配置不是必须的,但包含了大量默认的配置,可简化咱们的开发。
导入solon的web支持
<dependency> <groupId>org.noear</groupId> <artifactId>solon-web</artifactId> <type>pom</type> </dependency>
经过上面简单的2步配置,Solon就配置完毕了,是至关简洁的呢?
@Controller //这标明是一个solon的控制器 public class HelloApp { public static void main(String[] args) { //这是程序入口 Solon.start(HelloApp.class, args); } @Mapping("/hello") public String hello(String name){ return "Hello world!"; } }
Solon 程序的重点是要:在main函数的入口处,经过 Solon.start(...) 启动Solon的容器服务,进而启动它的全部机能。
运行HelloApp中的main()方法,启动该web应用后,在地址栏输入"http://localhost:8080/hello",就能够看到输出结果了。
Hello world!
到这里是否是已经大概感受到了Solon的高效和简洁了?配置就是如此简单,功能就是如此强大,但经过上面一系列的讲解,是否是也会产生一些疑惑呢,好比:
淡定,后续文章将会对一些常见的问题展开说明。