Solon 是一个更现代感的应用开发框架,轻量、开放生态型的。支持 Web、Data、Job、Remoting、Cloud 等任何开发场景。
目前有近130个生态插件,含盖了日常开发的各种需求。
@Servicepublic class DemoService{ @Db("db1") JdbcTemplate jdbcTemplate; @Db("db1") LambdaTemplate lambdaTemplate; public void test(){ var dtoList = jdbcTemplate.queryForList("select * from test_user", TestUser.class); var dtoList2 = lambdaTemplate.lambdaQuery(TestUser.class).queryForList(); }}#完整配置示例demo.cache1: driverType: "redisson" #缓存驱动类型 server: "localhost:6379" password: "1234" db: 0 #默认为 0,可不配置 defSeconds: 30 #默认为 30秒,可不配置//配置缓存服务@Configurationpublic class Config { //通过 CacheServiceSupplier ,可根据 driverType 自动构建缓存服务 @Bean(name = "cache2s") public CacheService cache2(@Inject("${demo.cache2}") CacheServiceSupplier supplier){ return supplier.get(); }}@Servicepublic class DemoService{ @Db("db1") DbContext db1; public void test(){ var dtoList = db1.table("test_user").limit(10).selectList("*", TestUser.class); }}mybatis.db1: typeAliases: - "demo4031.model" mappers: - "demo4031.dso.mapper" configuration: cacheEnabled: false logImpl: "org.apache.ibatis.logging.nologging.NoLoggingImpl" globalConfig: metaObjectHandler: "demo4031.dso.MetaObjectHandlerImpl" #新增的支持 dbConfig: logicDeleteField: "deleted"@Configurationpublic class DemoConfig { @Bean public I18nBundleFactory i18nBundleFactory(){ //将国际化服务,切换为云端接口 return new CloudI18nBundleFactory(); }}solon.cloud.local: breaker: root: 100 #默认100 (Qps100 或 信号量为100;视插件而定) main: 150 #此配置可以放到配置中心,例:#solon.cloud.water:# server: "waterapi:9371"# config.load: "breaker.yml"public class DemoApp { public static void main(String[] args) { Solon.start(DemoApp.class, args, app -> { //调试模式下,增加请求包围拦截器的打印 if (Solon.cfg().isDebugMode()) { app.after(ctx -> { Action action = ctx.action(); if (action != null && action.method().getArounds().size() > 0) { StringBuilder buf = new StringBuilder(); buf.append("path: ").append(ctx.path()).append(": "); for (InterceptorEntity ie : action.method().getArounds()) { buf.append(ie.getReal().getClass().getName()).append(","); } buf.setLength(buf.length() - 1); System.out.println(buf); } }); } }); }}HelloService rpc = Nami.builder().url("tcp://localhost:28080/demoe/rpc") .encoder(SnackTypeEncoder.instance) .timeout(60 * 60) //单位:秒 .create(HelloService.class);#设定会话超时秒数(单位:秒)server.session.timeout: 3600 #设定会话id的cookieNameserver.session.cookieName: "E52Ou8sV"public class DemoApp { public static void main(String[] args) { Solon.start(DemoApp.class, args); //打印所有路由记录里的控制器名 Collection<Routing<Handler>> routings = Solon.global().router().getAll(Endpoint.main); for(Routing<Handler> routing : routings){ if(routing.target() instanceof Action){ Action action = (Action) routing.target(); System.out.println(action.controller().name()); } } }}