Solon详解(一)- 快速入门

摘要:
Solon解释系列:Solon解释(I)-快速入门Solon解释?

Solon详解系列文章:
Solon详解(一)- 快速入门
Solon详解(二)- Solon的核心
Solon详解(三)- Solon的web开发
Solon详解(四)- Solon的事务传播机制
Solon详解(五)- Solon扩展机制之Solon Plugin
Solon详解(六)- 定制业务级别的验证注解

一、Solon

最近号称小而美的的Solon框架,终于得空,搞了一把,发觉Solon确实好用,那Solon到底是什么,又是怎么好用呢?

什么是Solon?

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

总体来说,Solon 有着类似于 Spring boot的开发体验。

Solon的优缺点

优点

  1. 小巧美丽
  2. 快速构建项目
  3. 项目可独立运行,不需要外部的web容器(jar直接部署)
  4. 部署效率高

缺点

  1. 文档很少
  2. 第三方项目的适配少(与Spring生态没法比)

二、快速入门

1、Solon的Java配置方式

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

1)@XConfiguration 和 @XBean

Solon的java配置方式是通过@XConfiguration 和 @XBean这两个注释实现的:

  • @XConfiguration 作用于类上,对Bean进行配置
  • @XBean 用在类上,也可以作用在 @XConfiguration 类的方法上
2)示例

该示例将通过java配置方式配置Bean,实现Solon IOC功能。

下面是一个简单的模拟从数据库获取User数据的Dao类(使用了@XBean注解,说明它将交给Solon容器管理)。

@XBean 
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;
    }
}

//也可以通过配置器构建Bean
//
//@XConfiguration
//public class SolonConfig {
//    @XBean
//    public UserDao getUserDao() {
//        return new UserDao();
//    }
//}

然后是一个最最常见的Service,通过注入UserDao,使用UserDao的方法获取用户数据。

@XBean
public class UserService {

    @XInject
    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) {
        //启动容器服务
        XApp.start(Test.class, args);
        
        //通过Aop对象获取Bean(或者注解方式)//可以用代码的方式获取托管bean
        //
        UserService userService = Aop.get(UserService.class);
        userService.getUserList();
    }
}

像普通的java程序一样,直接运行Test类中的main方法即可在控制台看到用户数据输出了。

应该可以发现了,以往的Spring boot 很像,又很不一样。

2、第一个Web应用

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

1)pom.xml配置

设置solon的parent

<parent>
    <groupId>org.noear</groupId>
    <artifactId>solon-parent</artifactId>
    <version>1.0.18</version>
</parent>

设置solon的parent配置不是必须的,但包含了大量默认的配置,可简化我们的开发。

导入solon的web支持

<dependency>
    <groupId>org.noear</groupId>
    <artifactId>solon-web</artifactId>
    <type>pom</type>
</dependency>

通过上面简单的2步配置,Solon就配置完毕了,是相当简洁的呢?

2)小示例
@XController    //这标明是一个solon的控制器
public class HelloApp {
    public static void main(String[] args) {    //这是程序入口
        XApp.start(HelloApp.class, args);
    }

    @XMapping("/hello")
    public String hello(String name){
        return "Hello world!";
    }
}

Solon 程序的重点是要:在main函数的入口处,通过XApp.start(...) 启动Solon的容器服务,进而启动它的所有机能。

运行HelloApp中的main()方法,启动该web应用后,在地址栏输入"http://localhost:8080/hello",就可以看到输出结果了。

Hello world!

三、疑问

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

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

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

免责声明:文章转载自《Solon详解(一)- 快速入门》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇编译高博十四讲代码遇到依赖项g2o和cholmod的坑tomcat生成调试日志配置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Spring配置中的id和name属性区分

ID属性 在spring容器管理的Bean中,必须仅且只有一个无重复的ID。 手动指定ID属性 一般情况下,配置一个bean时,需要指定它的ID属性作为bean的名称。 <bean id="helloWorld" class="com.learnSpring.hellWorld"/> 1 1 Q:如果在spring环境下,如果出现多个...

Shiro快速入门

写在前面:   最近项目中使用了Shiro,虽然不是自己在负责这一块,但还是抽空学习了下,也可以让自己对shiro有基本的了解。毕竟Shiro安全框架在项目中还是挺常用的。   对于Apache Shiro的基本概念就不在这里一一描述了,资料网上都有,主要还是记录下代码相关的,能够先让自己快速学会使用。   这里的demo(可以测试登录认证,登出,以及授权...

Dubbo多版本

当服务提供者提供的服务接口出现不兼容升级时,可以设置版本号,使用多个版本号(version)进行过渡。 1)、服务提供者配置文件 1 <dubbo:service ref="userService"interface="cn.coreqi.service.UserService"version="1.0.0"/> 2 3...

@ConfigurationProperties 配置详解

文章转自 https://blog.csdn.net/qq_26000415/article/details/78942494 前言新的一年到了,在这里先祝大家新年快乐.我们在上一篇spring boot 源码解析12-servlet容器的建立 中 分析 ServerProperties时,发现其类上有@ConfigurationProperties 注解...

spring注解(Component、依赖注入、生命周期、作用域)

1、注解 注解就是一个类,使用@加上注解名称,开发中可以使用注解取代配置文件 2、@Component 取代<bean  class="">,@Component 取代<bean id="" class=""> (1)创建一个类(该类与dao层无联系,是一个单独的类) @Component("studentService") pub...

Spring中单例和多例模式

Spring容器管理的bean在默认情况下是单例的,也是一个bean只会创建一个对象,存在内置 map中,之后无论获取多少次该bean,都返回同一个对象。这样可以减小了对象的创建,从而减小了内存的开销。 bean在单例或多例模式下的生命周期: 单例模式 bean在单例模式下,spring容器启动时解析xml文件发现该bean标签后,直接创建该bean对象...