Solon 框架詳解(一)- 快速入門


Solon 詳解系列文章:
Solon 框架詳解(一)- 快速入門
Solon 框架詳解(二)- Solon的核心
Solon 框架詳解(三)- Solon的web開發
Solon 框架詳解(四)- Solon的事務傳播機制
Solon 框架詳解(五)- Solon擴展機制之Solon Plugin
Solon 框架詳解(六)- Solon的校驗框架使用、定制與擴展
Solon 框架詳解(七)- Solon Ioc 的注解對比Spring及JSR330
Solon 框架詳解(八)- Solon的緩存框架使用和定制
Solon 框架詳解(九)- 渲染控制之定制統一的接口輸出
Solon 框架詳解(十)- Solon 的常用配置
Solon 框架詳解(十一)- Solon Cloud 的配置說明

一、Solon

最近號稱 Spring boot 輕量替代框架的 Solon。得空搞了一把,確實好用,小巧而快速。那Solon到底是什么,又是怎么好用呢?

什么是Solon?

Solon是參考 Spring boot 和 Javalin 而設計。吸取了兩者的的優點,避開了很多繁重的設計,使其支持 http, websocket, socket 三種通訊信號接入。Solon 2m即可支撐起完整的mvc開發了,0.1秒就可以完成啟動;相對於言,Spring boot 的一個普通mvc項目,基本上20M起步,啟動要3秒以上,而且qps也弱了很多。

總體來說,Solon 有着類似於 Spring boot的開發體驗;故而入坑成本極低,替代很方便。

項目源碼:https://gitee.com/noear/solon

Solon能干些什么?

  • Web 開發(Mvc)
  • Job 定時任務開發
  • Remoting 開發(Socket 、Rpc...)
  • Cloud 分布式開發 或 微服務開發
  • 等...

Solon的優缺點

優點

  1. 更小、更快、更自由
  2. 支持注解與手動兩種模式,按需自由操控
  3. 自帶IOC & AOP容器,支持PRC、REST API、MVC開發
  4. 集合 Handler + Context 和 Listener + Message 兩種架構模式;強調插件式擴展;適應不同的應用場景
  5. 統一 Http、WebSocket、Socket 三種信號的開發體驗
  6. 插件可擴展可切換:啟動插件,擴展插件,序列化插件,數據插件,會話狀態插件,視圖插件(可共存) 等...
  7. 使用感覺與 Spring Boot 近似,遷移成本低

缺點

  1. 新框架的通病,文檔相對較少
  2. 第三方項目的適配較少

二、快速入門

1、Solon的Java bean配置方式

使用Solon,可以零配置就讓你的項目快速運行起來,完全使用代碼和注解取代配置。使用java代碼方式可以更好的理解你配置的Bean,下面就先來看看兩個最基本的注釋:

1)純手動方式
Aop.wrapAndPut(UserDao.class);

//或
Aop.wrapAndPut(UserDao.class, new UserDao());
2)@Configuration + @Bean 方式

Solon 的java配置方式是通過@Configuration 和 @Bean這兩個注釋實現的(沒有xml方案):

@Configuration
public class SolonConfig {
    @Bean
    public UserDao getUserDao() {
        return new UserDao();
    }
}
3)@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.5.5</version>
</parent>

設置solon的parent配置不是必須的,但包含了大量默認的配置,可簡化我們的開發。

導入solon的web支持

<dependency>
    <groupId>org.noear</groupId>
    <artifactId>solon-web</artifactId>
</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項目地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM