Springboot mini - Solon详解(一)- 快速入门

Springboot min -Solon 详解系列文章:
Springboot mini - Solon详解(一)- 快速入门
Springboot mini - Solon详解(二)- Solon的核心
Springboot mini - Solon详解(三)- Solon的web开发html

1、Springboot min -Solon

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

什么是Solon?

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

Solon的优缺点

优势spring

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

缺点数据库

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

2、快速入门

一、Solon的Java bean配置方式

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

1)@Configuration + @Bean 方式

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

@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模式。

二、第一个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!

3、疑问

到这里是否是已经大概感受到了Solon的高效和简洁了?配置就是如此简单,功能就是如此强大,但经过上面一系列的讲解,是否是也会产生一些疑惑呢,好比:

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

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

附:Solon项目地址

相关文章
相关标签/搜索