拿来即用-solon,对标springboot,一个超级简单的java开发生态
目录
拿来即用-solon,对标springboot,一个超级简单的java开发生态!
书接上回,说到 ,这次就直接在solon上开干,顺便推荐大家用solon
目前我司已经在solon上开发了2个系统了,老项目跑了一年多,毛都没有发生。 稍微旧的是从1.8开始用solon,新项目用的是2.7,所以这里的demo算是最新的案例吧! 官方最新是2.8.0哦
不说废话,先给demo
使用demo的时候,尽量先花1分钟 读读 里面写的readme.md,能极大程度帮助你快速接入solon 嗯,自我觉得 readme 已经写的很完善了,,,哈哈哈哈哈
solon
Java “生态型”应用开发框架:更快、更小、更简单。
启动快 5 ~ 10 倍;并发高 2~ 3 倍; 内存省 1/3 ~ 1/2;打包缩小 50% ~ 90%;同时兼容 java8, java11, java17, java21, java22 运行时。
本文章的目的是让还在spring遨游中的童鞋们,能快速上岸,感受solon的简单以及强大,远离spring那臃肿的依赖!
- 首先是自动注入 @Autowired,目前solon就一个 @Inject ,而且用法多,更加强大
- spring中,@RestController + @ResponseBody = solon的 @Controller
- @RequestMapping 全部替换为 @Mapping
- 自动注入全部为 @Component,没有@Service等那些花里胡哨的
// controller 示例代码
@Controller
@Mapping("/user")
public class UserResource {
@Inject
private UserEntityService userService;
@Get
@Mapping("/info")
public UserEntity info() {
Integer userId = AuditAware.userId();
return userService.getOneById(userId);
}
@Get
@Mapping("/list")
public List list() {
return userService.lists();
}
}
// 对应的service 示例代码
@Component
public class UserEntityServiceImpl extends ServiceImpl
implements UserEntityService {
@Inject
private DeptEntityService deptService;
@Override
public void edit(UserEntity entity) {
// ...
}
}
// --------------------------------
// 其它的代码,和 mbatis plus 中没区别
// --------------------------------
// 自定义配置 示例 代码
@Data
@Configuration
@Inject("${custom}")
public class CustomProperties {
private String filePathPrefix;
private List aliTrans;
@Data
public static class AliTransConfig {
private String accessKeyId;
private String accessKeySecret;
private String endpoint;
}
}
- 配置类 @Configuration, 配合@Inject(“${custom}”)注入,实现@Component + @ConfigurationProperties(prefix = “xxx”)
server:
port: 8080
request:
maxFileSize: 500mb
useTempfile: true
custom:
filePathPrefix: "D:/"
...
- 如果用到mp,不用修改什么东西,目前完全适配,但是solon比spring更快,不香?
- 文件上传下载,更是简单到发指
- Context上下文属性,更是让你爽到飞起
private String getToken(Context ctx) {
String token1 = ctx.header("Authorization");
String token2 = ctx.param("_t");
if (StringUtils.isEmpty(token1)) {
if (StringUtils.isEmpty(token2)) {
return null;
} else {
return token2;
}
} else {
return token1;
}
}
- http client访问三方接口,这不简单?
public String post(String url, Object body) {
try {
String req = JSON.toJSONString(body);
// 这里返回的是 json str,直接fast json到对象即可
return HttpUtils.http(url).bodyJson(req).headers(headers()).post();
} catch (Exception e) {
e.printStackTrace();
throw new SeException(ErrCode.System_Error);
}
}
- 更多,请见 ,目前微信/QQ群非常活跃,三方插件也都在积极适配
- 说了这么多,demo地址给你们,别忘记学习,迁移
一个简单的main启动类 + 跨域处理
@SolonMain
public class Main {
public static void main(String[] args) {
Solon.start(Main.class, args, app -> {
// 跨域处理
app.filter(-1, new CrossFilter().allowedOrigins("*"));
});
}
}
还有一个好处,就是安装solon类的插件有,在idea community版本完全可用,毕竟不是spring了,破解什么的,不存在的!