Solon 是一个相似Springboot的微型开发框架,也是一个不基于Servlet的开发框架。我的项目从2018年启动以来,参考过大量前人作品;历时两年,3500屡次的commit;内核放弃0.1m的身材,超高的Web跑分,良好的应用体验。

Solon 强调:克服 + 简洁 + 凋谢的准则;力求:更小、更快、更自在的体验。

所谓更小:

内核0.1m,最小Web开发单位0.2m(相比Springboot我的项目包,小到能够乎略不计了)。

具用户反映,某些我的项目切换到Solon后,能够缩减到原来10%的包大小。

所谓更快:

本机helloworld测试,启动最快可达0.09s,Qps可达12万之多。可参考:《helloworld_wrk_test》。

所谓更自在:

  • 代码操控自在:
// 除了注入模式之外,还能够按需手动////手动获取配置String userName = Solon.cfg().get("user.name");Properties dbcfg = Solon.cfg().getProp("db");//手动获取容器里的BeanUserService userService = Aop.get(UserService.class);//手动监听http post申请Solon.global().post("/user/update", x-> userService.updateById(x.paramMap())); 
  • 框架抉择自在:

能够用solon-web这样的疾速开发集成包。也能够按我的项目须要抉择不同的插件组装,比方:为非Solon我的项目增加solon.boot.jlhttp,0.2m即可让我的项目实现http+rpc开发;还能够用MVC开发Socket利用。

个性简集:

1、与Springboot的罕用注解比拟

Solon 1.2.12

Springboot 2.3.3

阐明

@Inject *

@Autowired

注入Bean(by type)

@Inject("name")

@Qualifier+@Autowired

注入Bean(by name)

@Inject("${name}")

@Value("${name}")

注入配置

@Component

@Component

托管组件

@Singleton

@Scope(“singleton”)

单例(Solon 默认是单例)

@Singleton(false)

@Scope(“prototype”)

非单例

@Init *

@PostConstruct

结构实现并注入后的初始化

@Configuration

@Configuration

配置类

@Bean

@Bean

配置组件

@Mapping

@RequestMapping,@GetMapping...

映射

@Param

@RequestParam

申请参数

@Controller

@Controller,@RestController

控制器类

@Service

@Service

服务类

@Dao

@Dao

数据拜访类

  • Solon 的 @Inject 算是: Spring 的@Value、@Autowired、@Qualifier 三者的联合,但又不齐全等价
  • Solon 托管的 Bean 初始化程序:new() - > @Inject - > @Init
  • 注1:@Inject 的参数注入,只在Method@Bean上无效
  • 注2:@Inject 的类型注入,只在@Configuration类上无效

2、重要的区别,Solon不是基于Servlet的开发框架

  • 与Springboot类似的体验,但应用Context包装申请上下文。Helloworld成果如下:
@Controllerpublic class App{    public static void main(String[] args){        Solon.start(App.class, args);    }        @Inject("${app.name}")    String appName;      @Mapping("/")    public Object home(Context c, @Param(defaultValue="noear") String name){        return  appName + ": Hello " + name;      }} 

3、与Springboot类似的事务反对@Tran

  • 采纳Springboot雷同的事件流传机制及隔离级别
@Controllerpublic class DemoController{    @Db    BaseMapper<UserModel> userService;        @Tran    @Mapping("/user/update")    public void udpUser(long user_id, UserModel user){        userService.updateById(user);    }} 

4、与Springboot不同的较验计划@Valid

  • Solon 的计划更偏重较验参数(及批量较验),且强调可见性(即与处理函数在一起)
@Valid  @Controllerpublic class DemoController {    @NoRepeatSubmit    @NotNull({"name", "icon", "mobile"})    @Mapping("/valid")    public String test(String name, String icon, @Pattern("13d{9}") String mobile) {        return "OK";    }    @Whitelist    @Mapping("/valid/test2")    public String test2() {        return "OK";    }} 

5、基于标签治理的缓存反对@Cache,与Springboot略有不同

  • 基于标签治理,防止不必要的KEY抵触
@Controllerpublic class DemoController{    @Db    BaseMapper<UserModel> userService;        @CacheRemove(tags = "user_${user_id}")    @Mapping("/user/update")    public void udpUser(int user_id, UserModel user){        userService.updateById(user);    }        @Cache(tags = "user_${user_id}")    public UserModel getUser(int user_id){        return userService.selectById(user_id);    }} 

6、具备语义个性的Bean定义,实https://github.com/hitl837/ml...

https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...
https://github.com/hitl837/ml...
https://www.github.com/hitl83...
http://github.com/hitl837/mlo...