一、Springboot min -Solon

最近号称 Springboot mini 的 Solon框架,得空搞了一把,发觉Solon确实好用,小巧而快速。那Solon到底是什么,又是怎么好用呢?

什么是Solon?

Solon是参考Spring boot 和 Javalin 而设计。吸取了两者的的优点,避开了很多繁重的设计,使其支持http, websocket, socket 三种通讯信号接入。Solon 2M即可支撑起普通的mvc开发了,0.1秒就可以完成启动;相对于言,Spring boot 的一个普通mvc项目,基本上20M起步,启动要3秒以上,而且qps也弱了很多。

总体来说,Solon 有着类似于 Spring boot的开发体验;故而号称Springboot mini。

项目源码:https://gitee.com/noear/solon

Solon的优缺点

优点

  1. 更小、更快、更自由
  2. 支持注解与手动两种控制模式,自由切换
  3. 自带IOC & AOP容器,支持MVC
  4. 采用Handler + Context 架构;强调插件式扩展
  5. 统一Http(支持 Servlet 或 NoServlet),WebSocket,Socket三种信号接入
  6. 插件可扩展可切换:启动插件,扩展插件,序列化插件,数据插件,会话状态插件,视图插件(可共存) 等...
  7. 体验与Spring boot相近,迁移成本低

缺点

  1. 新框架的通病,文档相对较少
  2. 第三方项目的适配较少

二、快速入门

1、Solon的Java bean配置方式

使用Solon,可以零配置就让你的项目快速运行起来,完全使用代码和注解取代配置。使用java代码方式可以更好的理解你配置的Bean,下面就先来看看两个最基本的注释:

1)@Configuration + @Bean 方式

Solon 的java配置方式是通过@Configuration 和 @Bean这两个注释实现的(没有xml方案):

@Configuration
public class SolonConfig {
@Bean
public UserDao getUserDao() {
return new UserDao();
}
}
2)@Component

该示例将通过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模式。

2、第一个Web应用

通过上面的示例,我们已经知道了Solon的java配置方式是怎么回事了,那接下来便正式开始使用Solon来开发我们的第一个web应用了.

1)pom.xml配置

设置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就配置完毕了,是相当简洁的呢?

2)小示例
@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的高效和简洁了?配置就是如此简单,功能就是如此强大,但通过上面一系列的讲解,是不是也会产生一些疑惑呢,比如:

  1. Solon启动的过程,都干了啥?
  2. WEB应用的默认端口就是8080,那这个端口要怎么修改呢?
  3. 我们自定义的配置要如何读出来?
  4. 页面重定向用什么接口?
  5. 等等...

淡定,后续文章将会对一些常见的问题展开说明。

附:Solon项目地址

Springboot mini - Solon详解(一)- 快速入门的更多相关文章

  1. Springboot mini - Solon详解(四)- Solon的事务传播机制

    Springboot min -Solon 详解系列文章: Springboot mini - Solon详解(一)- 快速入门 Springboot mini - Solon详解(二)- Solon ...

  2. Springboot mini - Solon详解(二)- Solon的核心

    Springboot min -Solon 详解系列文章: Springboot mini - Solon详解(一)- 快速入门 Springboot mini - Solon详解(二)- Solon ...

  3. Springboot mini - Solon详解(三)- Solon的web开发

    Springboot min -Solon 详解系列文章: Springboot mini - Solon详解(一)- 快速入门 Springboot mini - Solon详解(二)- Solon ...

  4. Springboot mini - Solon详解(五)- Solon扩展机制之Solon Plugin

    Springboot min -Solon 详解系列文章: Springboot mini - Solon详解(一)- 快速入门 Springboot mini - Solon详解(二)- Solon ...

  5. Springboot mini - Solon详解(六)- Solon的校验框架使用、定制与扩展

    Springboot min -Solon 详解系列文章: Springboot mini - Solon详解(一)- 快速入门 Springboot mini - Solon详解(二)- Solon ...

  6. Springboot mini - Solon详解(七)- Solon Ioc 的注解对比Spring及JSR330

    Springboot min -Solon 详解系列文章: Springboot mini - Solon详解(一)- 快速入门 Springboot mini - Solon详解(二)- Solon ...

  7. Springboot mini - Solon详解(八)- Solon的缓存框架使用和定制

    Springboot min -Solon 详解系列文章: Springboot mini - Solon详解(一)- 快速入门 Springboot mini - Solon详解(二)- Solon ...

  8. elasticsearch系列二:索引详解(快速入门、索引管理、映射详解、索引别名)

    一.快速入门 1. 查看集群的健康状况 http://localhost:9200/_cat http://localhost:9200/_cat/health?v 说明:v是用来要求在结果中返回表头 ...

  9. Solon详解(六)- Solon的校验扩展框架使用与扩展

    Solon详解系列文章: Solon详解(一)- 快速入门 Solon详解(二)- Solon的核心 Solon详解(三)- Solon的web开发 Solon详解(四)- Solon的事务传播机制 ...

随机推荐

  1. linux 进程间通信 共享内存 mmap

    共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式.两个不同进程A.B共享内存的意思是,同一块物理内存被映射到进程A.B各自的进程地址空间.进程A可以即时看到进程B对共享内存中数据的更新,反 ...

  2. 论文学习笔记 - 高光谱 和 LiDAR 融合分类合集

    A³CLNN: Spatial, Spectral and Multiscale Attention ConvLSTM Neural Network for Multisource Remote Se ...

  3. python实现祝福弹窗

    接下来教大家怎么用python献上满满的祝福.首先给大家看一下最终模样. 注:密集恐惧症患者勿入! 模样大家已经看见了,首先想想一下,当朋友打开你发送过去的软件, 然后点击运行,结果,一个一个的窗口慢 ...

  4. 说说基于网络的五种IO模型

    # django不是一个异步框架 # tornado是异步的web框架 # 处理每秒大量的请求 # 个人理解的IO:就是应用层与内核驱动层的交互,这个过程无论从应用层到内核中,还是驱动层等待硬件层的数 ...

  5. spring boot配置MySQL8.0 Druid数据源

    创建spring boot项目,在pom中添加相应依赖 <!--web--> <dependency> <groupId>org.springframework.b ...

  6. 字符串匹配—KMP算法

    KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特-莫里斯-普拉特操作(简称KMP算法).KMP算法的核心是利用匹配失败后 ...

  7. Flink处理函数实战之四:窗口处理

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  8. 我的开源经历:为了方便处理三方 HTTP 接口而写的 Java 框架

    缘起 我以前公司需要在 Java 后台调用许多第三方 HTTP 接口,比如微信支付.友盟等等第三方平台. 公司内部还有很多服务是用世界最好语言写的,接口自然也只能通过 HTTP 接口来调用.于是日积月 ...

  9. 简单实用的Boom 3D进阶使用教程分享

    对于初学者来说,简单体验Boom 3D的3D环绕音效,就可以通过普通耳机享受到高品质耳机的动人音效.而对于进阶者来说,Boom 3D灵活的预设功能,能让其享受到自由调整均衡器.低音的乐趣. 图1:Bo ...

  10. C语言基础知识:几种特殊的函数宏封装方式

    函数宏介绍 函数宏,即包含多条语句的宏定义,其通常为某一被频繁调用的功能的语句封装,且不想通过函数方式封装来降低额外的弹栈压栈开销. 函数宏本质上为宏,可以直接进行定义,例如: #define INT ...