首页 文章 精选 留言 我的

精选列表

搜索[boot],共8307篇文章
优秀的个人博客,低调大师

对标 Spring Boot & Cloud ,轻量框架 Solon 1.5.8 发布

Solon 是一个轻量的Java基础开发框架。强调,克制 + 简洁 + 开放的原则;力求,更小、更快、更自由的体验。支持:RPC、REST API、MVC、Job、Micro service、WebSocket、Socket 等多种开发模式。短小而精悍! Solon Cloud 是一系列的接口标准和配置规范,算是 Solon 的分布式开发套件方案。 快速了解Solon的材料: 《Solon 特性简集,相较于 Springboot 有什么区别?》 《Solon Cloud 分布式服务开发套件清单,感觉受与 Spring Cloud 的不同》 《Solon 的想法与架构笔记》 所谓更小: 内核0.1m,最小的接口开发单位0.2m(相较于 Dubbo、Springboot 的依赖包,小到可以乎略不计) 所谓更快: 本机http helloworld测试,Qps可达12万之多。可参考:《helloworld_wrk_test》 所谓更自由:(代码操控自由) // 除了注解模式之外,还可以按需手动 // //手动获取配置(Props 为 Properties 增强版) Props db = Solon.cfg().getProp("db"); //手动获取容器里的Bean UserService userService = Aop.get(UserService.class); //手动监听http post请求 Solon.global().post("/user/update", x-> userService.updateById(x.paramMap())); //手动添加个RPC服务 Solon.global().add("/rpc/", HelloService.class, true); //手动获取一个RPC服务消费端 HelloService helloService = Nami.builder().create(HelloService.class); //手动为容器添加组件 Aop.wrapAndPut(DemoService.class); 本次版本主要变化: 1、插件 solon.extend.sessionstate.jwt,增加 prefix、allowAutoIssue、allowUseHeader 配置项 solon.extend.sessionstate.jwt 可以更简单的使用 JWT,像使用 sessionstate 一般。配置示例: server.session: timeout: 7200 #单位秒;(可不配,默认:7200) state: jwt: name: TOKEN #变量名;(可不配,默认:TOKEN) secret: "E3F9N2kRDQf55pnJPnFoo5+ylKmZQ7AXmWeOVPKbEd8=" #密钥(使用 JwtUtils.createKey() 生成);(可不配,默认:xxx) prefix: Bearer #令牌前缀(可不配,默认:空) allowExpire: true #充许超时;(可不配,默认:true);false,则token一直有效 allowAutoIssue: false #充许自动输出;(可不配,默认:true);flase,则不向header 或 cookie 设置值(由用户手动控制) allowUseHeader: false #充许使用Header传递;(可不配,默认:使用 Cookie 传递);true,则使用 header 传递 可以通过,JwtUtils.createKey() 生成密钥,例: public class JwtTest { @Test public void test(){ System.out.println(JwtUtils.createKey()); } } 应用示例: @Mapping("api") @Controller public class API_test_login extends ApiBase { @Mapping("test.login") public String exec(Context ctx) { //设置session ctx.sessionSet("user_id", "12"); ctx.sessionSet("name", "noear"); //将session值,手动生成token并做为接口的结果输出 return ctx.sessionState().sessionToken(); } } 2、插件 beetlsql-solon-plugin,升级 beetlsql 为 3.4.3(SQLManagerBuilder 增强了构建能力) 这个更新,主要是增加 beetlsql 的 SQLManagerBuilder 能力。 EventBus.subscribe(SQLManagerBuilder.class, e->{ e.setDbStyle(new OracleStyle()); //e.addIdAutoGen(); }); 3、插件 httputils-solon-plugin,添加 PreheatUtils 接口预热小工具 PreheatUtils 是一个方便请求自己接口的小工具,便于在程序内部编写预热代码。 public class DemoApp { public static void main(String[] args) { Solon.start(DemoApp.class, args); //请求自己的接口进行预热 PreheatUtils.preheat("/cfg/get/?tag=water"); PreheatUtils.preheat("/cfg/set/", h -> h.data("value", "test").post()); } } 4、添加 SolonProps::loadEnv 加载环境变量接口 使用Docker 或 K8s 部署时,容器可以添加环境配置。为了方便,提供了loadEnv接口,从而使用环境变量如果属性变量。 public class DemoApp { public static void main(String[] args) { Solon.start(DemoApp.class, args, app->{ //加载环境变量(如果有则加载并替换profile的值) app.cfg().loadEnv("water."); //通过属性能力,获取链接池实例 HikariDataSource ds =app.cfg().getBean("water.ds.",HikariDataSource.class); }); // // 此代码的效果:1.本地可配置profile; 2.容器部署时可通过环境变量修改 // } } 5、添加 SolonApp::signalGet 获取信号接口 这个功能用处好像不大。。。但可以做些日志。 public class DemoApp { public static void main(String[] args) { SolonApp app = Solon.start(DemoApp.class, args); //获取18080的端口信号信息,并打印 Signal signal = app.signalGet(18080); System.out.println(signal); } } 6、solon.cloud CloudJob 增加 cron7x 可选属性 @CloudJob(name = "DemoJob", cron7x = "0 * * * * ?") public class DemoJob implements CloudJobHandler { static final Logger log = LoggerFactory.getLogger(DemoJob.class); @Override public void handle(Context ctx) throws Throwable { log.info("JobHandlerDemo1"); } } //或者 @CloudJob(name = "DemoJob", cron7x = "1m") public class DemoJob implements CloudJobHandler { static final Logger log = LoggerFactory.getLogger(DemoJob.class); @Override public void handle(Context ctx) throws Throwable { log.info("JobHandlerDemo1"); } } 7、solon.validation 增加更多注释 8、插件 mybatis-solon-plugin 升级 mybatis 为 3.5.7 9、插件 solon.serialization.protostuff 升级 protostuff 为 1.7.4 10、插件 solon.socketd.client.smartsocket 升级 smartsocket 1.5.10 11、插件 solon.serialization.hession 升级 hessian 4.0.65 12、插件 solon.auth AuthUtil 验证权限与角色前增加登录验证 13、增加 qiniu-kodo-solon-plugin 对象存储适配插件 附:入门示例 Solon 入门教程示例:https://gitee.com/noear/solon_demo Solon Api 入门教程示例:https://gitee.com/noear/solon_api_demo Solon Rpc 入门教程示例:https://gitee.com/noear/solon_rpc_demo Solon Auth 入门教程示例:https://gitee.com/noear/solon_auth_demo Solon Cloud 入门教程示例:https://gitee.com/noear/solon_cloud_demo Solon 进阶教程示例:https://gitee.com/noear/solon_advance_demo

优秀的个人博客,低调大师

对标 Spring Boot & Cloud ,轻量框架 Solon 1.4.14 发布

Solon 是一个轻量的Java基础开发框架。强调,克制 + 简洁 + 开放的原则;力求,更小、更快、更自由的体验。支持:RPC、REST API、MVC、Job、Micro service、WebSocket、Socket 等多种开发模式。短小而精悍! Solon Cloud 是一系列的接口标准和配置规范,算是 Solon 的分布式开发套件方案。 快速了解Solon的材料: 《Solon 特性简集,相较于 Springboot 有什么区别?》 《Solon Cloud 分布式服务开发套件清单,感觉受与 Spring Cloud 的不同》 《Solon 的想法与架构笔记》 《Solon 生态插件清单》,目前已有100多个生态插件 《Solon 框架入门》 所谓更小: 内核0.1m,最小的接口开发单位0.2m(相较于 Dubbo、Springboot 的依赖包,小到可以乎略不计) 所谓更快: 本机http helloworld测试,Qps可达12万之多。可参考:《helloworld_wrk_test》 所谓更自由:(代码操控自由) // 除了注解模式之外,还可以按需手动 // //手动获取配置(Props 为 Properties 增强版) Props db = Solon.cfg().getProp("db"); //手动获取容器里的Bean UserService userService = Aop.get(UserService.class); //手动监听http post请求 Solon.global().post("/user/update", x-> userService.updateById(x.paramMap())); //手动添加个RPC服务 Solon.global().add("/rpc/", HelloService.class, true); //手动获取一个RPC服务消费端 HelloService helloService = Nami.builder().create(HelloService.class); //手动为容器添加组件 Aop.wrapAndPut(DemoService.class); 本次版本主要变化: 1、应用配置增加简化文件名支持,例:app.yml, app-env.yml 2、SocketD 协议 headers 最长由 1k 增加为 4k 3、SocketD debug 日志改由 slf4j 控制(不再依赖 isFileModel 和 isDebugModel) 4、opentracing-solon-plugin 增加 socketd 支持 5、Nami debug 日志改由 slf4j 控制(不再依赖 isFileModel 和 isDebugModel) 6、Mapping 的信号类型,由 HTTP 改为 ALL(减少对MethodType的设定) 7、Auth 添加 AuthProcessorBase 类 ,支持权限数组的配置方式 8、调整 mand handler 成功后,则立即设为 ctx.setHandled(true);方便 after handler 识别404状态 9、修复 main action setHandled(true),after action 不执行的问题 附:入门示例 Solon 入门教程示例:https://gitee.com/noear/solon_demo Solon Api 入门教程示例:https://gitee.com/noear/solon_api_demo Solon Rpc 入门教程示例:https://gitee.com/noear/solon_rpc_demo Solon Cloud 入门教程示例:https://gitee.com/noear/solon_cloud_demo Solon 进阶教程示例:https://gitee.com/noear/solon_advance_demo

优秀的个人博客,低调大师

对标 Spring Boot & Cloud ,轻量框架 Solon 1.4.12 发布

Solon 是一个轻量的Java基础开发框架。强调,克制 + 简洁 + 开放的原则;力求,更小、更快、更自由的体验。支持:RPC、REST API、MVC、Job、Micro service、WebSocket、Socket 等多种开发模式。短小而精悍! Solon Cloud 是一系列的接口标准和配置规范,算是 Solon 的分布式开发套件方案。 快速了解Solon的材料: 《Solon 特性简集,相较于 Springboot 有什么区别?》 《Solon Cloud 分布式服务开发套件清单,感觉受与 Spring Cloud 的不同》 《Solon 的想法与架构笔记》 《Solon 生态插件清单》,目前已有100多个生态插件 《Solon 框架入门》 所谓更小: 内核0.1m,最小的接口开发单位0.2m(相较于 Dubbo、Springboot 的依赖包,小到可以乎略不计) 所谓更快: 本机http helloworld测试,Qps可达12万之多。可参考:《helloworld_wrk_test》 所谓更自由:(代码操控自由) // 除了注解模式之外,还可以按需手动 // //手动获取配置(Props 为 Properties 增强版) Props db = Solon.cfg().getProp("db"); //手动获取容器里的Bean UserService userService = Aop.get(UserService.class); //手动监听http post请求 Solon.global().post("/user/update", x-> userService.updateById(x.paramMap())); //手动添加个RPC服务 Solon.global().add("/rpc/", HelloService.class, true); //手动获取一个RPC服务消费端 HelloService helloService = Nami.builder().create(HelloService.class); //手动为容器添加组件 Aop.wrapAndPut(DemoService.class); 本次版本主要变化: 1、增加新的插件适配 添加 opentracing-solon-plugin 插件。可快速对接所有支持 opentracing 的链路跟踪产品。下面以 Jaeger 对接为例: @Configuration public class Config { @Bean public Tracer tracer() throws TTransportException { Reporter reporter = new RemoteReporter.Builder() .withSender(new UdpSender(AGENT_HOST, AGENT_PORT, 0)) .withFlushInterval(10) .build(); return new JaegerTracer.Builder(Solon.cfg().appName()) .withReporter(reporter) .withExpandExceptionLogs() .withSampler(new ConstSampler(true)).build(); } } 2、优化 Nami 内部结构(不影响外部调用) 优化 Nami Filter;改为链式过滤;并添加 Invocation 做为配套 拆分 Nami.Builder 为独立的 NamiBuilder 类 取消 Decoder, Encoder, Channel 对 Filter 的继承;改为更明确的 pretreatment 预处理接口 移动 Result 到 nami 一级包目录 简化 Naimi 的附件模式。改由 NamiAttachment 直接操控 总体来说,是简化和增强了 Nami 的过滤及附件能力。例: //过滤能力 @Component public class NamiFilterAdapter implements Filter { //这是Nami的过滤器接口 @Override public Result doFilter(Invocation inv) throws Throwable { inv.headers.put("token","1"); System.out.println("我给 Nami 加了个头信息!"); return inv.invoke(); } } //附件能力 @Controller public class Demo { @NamiClient HelloService helloService; @Mapping("/") public void test() { //添加附件:token=aaa (最终会做为 header 传给 server) NamiAttachment.put("Token","5643c10c-87c3-4b7e-bd26-30cf2456aad8"); //helloService 的 remoting server ,需要有 token 认证 helloService.hello("noear"); } } 3、增强部分接口及相关配置能力 增加 Solon Filter 序号位支持 增加 Solon Props::getByParse 接口,可应对组合配置需要。例:Hello ${user.name}这样的配置需求 增加 CloudJobHandler 接口,让 Job Handler 更清晰些 增加 Solon Auth 新注解:@AuthIp,@AuthPath支持 增加 CloudConfig 的注解内容,支持 ${xx}yyy 风格配置 增加 CloudEvent 的注解内容,支持 ${xx}yyy 风格配置 增加 CloudJob 的注解内容,支持 ${xx}yyy 风格配置 增加 CloudBreaker 的注解内容,支持 ${xx}yyy 风格配置 增加 @Component 单例组件通过 EventBus 扩展的机制 增加 env 启动参数切换配置文件;例:java -jar xxx.jar -env=test 标注 Utils::throwableWrap 函数为弃用,并调整内部异常包装处理 限制 DataThrowable 被最终渲染 取消 WarnThrowable 4、日志对接进一步增加 Solon 的日志体系,除自有 slf4j 实现之后;还适配有 Logback 的添加器;现增加 Log4j 添加器的适配。 附:入门示例 Solon 入门教程示例:https://gitee.com/noear/solon_demo Solon Rpc 入门教程示例:https://gitee.com/noear/solon_rpc_demo Solon Cloud 入门教程示例:https://gitee.com/noear/solon_cloud_demo Solon 进阶教程示例:https://gitee.com/noear/solon_advance_demo

优秀的个人博客,低调大师

对标 Spring Boot & Cloud ,轻量框架 Solon 1.4.8 发布

Solon 是一个轻量的Java基础开发框架。强调,克制 + 简洁 + 开放的原则;力求,更小、更快、更自由的体验。支持:RPC、REST API、MVC、Job、Micro service、WebSocket、Socket 等多种开发模式。 Solon Cloud 是一系列的接口标准和配置规范,算是 Solon 的分布式开发套件方案。 快速了解Solon的材料: 《Solon 特性简集,相较于 Springboot 有什么区别?》 《Solon Cloud 分布式服务开发套件清单,感觉受与 Spring Cloud 的不同》 《Solon 的想法与架构笔记》 《Solon 生态插件清单》,目前已有100多个生态插件 《Solon 框架入门》 所谓更小: 内核0.1m,最小的接口开发单位0.2m(相较于 Dubbo、Springboot 的依赖包,小到可以乎略不计) 所谓更快: 本机http helloworld测试,Qps可达12万之多。可参考:《helloworld_wrk_test》 所谓更自由:(代码操控自由) // 除了注解模式之外,还可以按需手动 // //手动获取配置(Props 为 Properties 增强版) Props db = Solon.cfg().getProp("db"); //手动获取容器里的Bean UserService userService = Aop.get(UserService.class); //手动监听http post请求 Solon.global().post("/user/update", x-> userService.updateById(x.paramMap())); //手动添加个RPC服务 Solon.global().add("/rpc/", HelloService.class, true); //手动获取一个RPC服务消费端 HelloService helloService = Nami.builder().create(HelloService.class); //手动为容器添加组件 Aop.wrapAndPut(DemoService.class); 本次版本主要变化: 1、增加 sa-token-solon-plugin 插件,适配 sa-token 认证框架 应用样例 @Controller @Mapping("/test/") public class TestController { @SaCheckLogin @SaCheckRole("super-admin") @SaCheckPermission("user-add") @Mapping("atCheck") public AjaxJson atCheck() { System.out.println("只有通过注解鉴权,才能进入此方法"); return AjaxJson.getSuccess(); } @Mapping("atJurOr") @SaCheckPermission(value = {"user-add", "user-all", "user-delete"}, mode = SaMode.OR) public AjaxJson atJurOr() { return AjaxJson.getSuccessData("用户信息"); } } 2、增加 solon.extend.auth 插件,Solon 自扩展的认证框架 适配样例 @Configuration public class Config { @Bean public AuthAdapter init() { return new AuthAdapter() .loginUrl("/login") .authPathMatchers(new AuthPathMatchersImpl()) .authInterceptor(new AuthInterceptorImpl()) .authProcessor(new AuthProcessorImpl()) .authOnFailure((ctx, rst) -> { ctx.render(Result.failure(403,"没有权限:(")); }); } } 应用样例 @Controller @Mapping("/test/") public class TestController { @Mapping("/hello/") public String hello() { return "hello world!"; } @AuthRoles("admin") @Mapping("/admin/") public String admin() { return "hello admin!"; } } 3、增加 solon-enjoy-web 快速开发套件(支持 enjob + activerecord 体验) jFinal 系列技术的爱好者,可以有不同的玩具了。solon-enjoy-web,支持 solon 完整的事务能力及缓存能力 //配置默认数据源 @Configuration public class Config { @Bean public DataSource db1(@Inject("${test.db1}") HikariDataSource dataSource) { return dataSource; } } //应用示列 @Mapping("/demo/") @Controller public class DemoController { @Mapping("") public Object test(){ return Db.template("appx_get").findFirst(); } @Cache(tags = "test2") @Mapping("/test2") public Object test2(){ AppxModel dao = new AppxModel().dao(); return dao.findById(4); } } 4、增加 异常订阅转换为正常输出的能力 @Component public class GlobalException implements EventListener<Throwable> { @Override public void onEvent(Throwable e) { Context c = Context.current(); if (c != null) { AjaxJson aj = null; if (e instanceof SaTokenException) { NotLoginException ee = (NotLoginException) e; aj = AjaxJson.getNotLogin().setMsg(ee.getMessage()); } else if (e instanceof NotRoleException) { NotRoleException ee = (NotRoleException) e; aj = AjaxJson.getNotJur("无此角色:" + ee.getRole()); } else if (e instanceof NotPermissionException) { NotPermissionException ee = (NotPermissionException) e; aj = AjaxJson.getNotJur("无此权限:" + ee.getCode()); } else if (e instanceof DisableLoginException) { DisableLoginException ee = (DisableLoginException) e; aj = AjaxJson.getNotJur("账号被封禁:" + ee.getDisableTime() + "秒后解封"); } else { aj = AjaxJson.getError(e.getMessage()); } c.result = aj; } } } 附:入门示例 Solon 入门教程示例:https://gitee.com/noear/solon_demo Solon Rpc 入门教程示例:https://gitee.com/noear/solon_rpc_demo Solon Cloud 入门教程示例:https://gitee.com/noear/solon_cloud_demo Solon 进阶教程示例:https://gitee.com/noear/solon_advance_demo

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册