Se lanza Solon 1.2.13, lo que permite la intercomunicación con Spring Boot

Solon es un marco de microdesarrollo similar a Springboot. Desde que se lanzó el proyecto en 2018, se ha hecho referencia a una gran cantidad de trabajos anteriores; tomó dos años y más de 3.500 confirmaciones; el kernel mantiene una cifra de 0.1m, puntajes de ejecución web súper altos y una buena experiencia de usuario.

Solon enfatiza el principio de moderación + simplicidad + apertura; se esfuerza por lograr una experiencia más pequeña, más rápida y más libre.

Los llamados más pequeños:

El núcleo es de 0,1 my la unidad de desarrollo web más pequeña es de 0,2 m (en comparación con el paquete del proyecto Springboot, es tan pequeño que puede descuidarse)

El llamado más rápido:

La prueba local de helloworld, Qps puede llegar a 120.000. Puede referirse a: " helloworld_wrk_test "

La llamada más libertad: (manipulación de código libre)

// 除了注入模式之外,还可以按需手动
//
//手动获取配置
Map<String,String> db = Solon.cfg().getMap("db");

//手动获取容器里的Bean
UserService userService = Aop.get(UserService.class);

//手动监听http post请求
Solon.global().post("/user/update", x-> userService.updateById(x.paramMap()));

Cambios importantes en esta versión:

1. Agregue el complemento: springboot-solon-plugin (para lograr la interoperabilidad con Springboot)

  • Introduzca el marco, de aproximadamente 0,1 m de tamaño.
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>springboot-solon-plugin</artifactId>
    <version>1.2.13</version>
</dependency>

Si necesita importar otros complementos de Solon, ¿Solon se adapta a un marco más pequeño?

  • Después de incrustarlo en el sistema Springboot, use los recursos del contenedor y las características de los dos marcos al mismo tiempo; o mézclelos temporalmente durante el período de transición

1) Inicie la aplicación

@SpringBootLinkSolon
@SpringBootApplication
public class DemoApp {
    public static void main(String[] args) {
        //先
        Solon.start(DemoApp.class, args);
        //后
        SpringApplication.run(DemoApp.class, args);
    }
}

2) Definir los componentes de Springboog

public interface HelloService {
    String hello(String name);
}

//此处为Springboot的注解(Solon 也有同名的注解)
@Component
public class HelloServiceImp implements HelloService {
    @Override
    public String hello(String name) {
        return "hello: " + name;
    }
}

3) Use los componentes en el contenedor Springboot en la clase Solon

//此处为Solon的注解(Springboot 也有同名的注解)
@Controller
public class SolonController {
    //使用Solon注解,将Springboot bean注入到Solon的托管类中
    @Inject
    HelloService helloService;
    
    //注入配置
    @Inject("${user.name}")
    String name;

    @Mapping("/test")
    public String home(String msg) throws Exception {
        return "solon: " + helloService.hello();
    }
}

4) Use la función de escritura a mano de Solon en la clase Springboot

@RestController
public class Text2Controller {

    HelloService helloService;

    @RequestMapping("/test2")
    public String home(String msg) throws Exception {
        //使用Solon的手写特性赋值,进行懒加载
        //
        if(helloService == null){
            helloService = Aop.get(HelloService.class);
        }

        //手动获取配置
        //
        String name = Solon.cfg().get("user.name");
        
        //也可以动态增加一个请求监听
        //
        //Solon.global().get("/hello",(c)->c.output("Hello world!"));

        return "springboot: " + helloService.hello(name);
    }
}

? Lo anterior solo está diseñado para efectos de demostración y puede no coincidir con la escena real?

2. Adaptarse a los servicios de configuración y registro de terceros, marco de consulta: consul-solon-plugin

  • Este marco es aportado por desarrolladores comunitarios, la primera contribución comunitaria de Solon. . . muchas gracias

1) Ejemplo de configuración

solon.app.name=test-consul-api
solon.app.group=test

consul.host=localhost
#consul.port=8500
#consul.token=
#consul.discovery.enable=true
#consul.discovery.hostname=12.12.12:12
#consul.discovery.tags=dev

#consul.discovery.healthCheckInterval=10s
#consul.discovery.healthCheckPath=/run/check/
consul.discovery.healthDetector=jvm,cpu,memory,disk,qps,os

#consul.locator.enable=true
#consul.locator.interval=10000

#consul.config.enable=true
#consul.config.key=test
consul.config.watch=config/,gateway/
#consul.config.interval=10000

2) Ejemplo de uso

@Controller
public class HelloController {

    //使用了consul的注册与发现服务
    //
    @NamiClient("test-consul-api:/")
    HelloInterface helloInterface;

    @Mapping("/hello")
    public String sayHello() {
    
        //consul的配置内容集成到Solon的配置体系,可注入,可手动获取
        //
        return "config:" + Solon.cfg().get("hello")+",rpc:"+helloInterface.hello0();
    }
}

Supongo que te gusta

Origin www.oschina.net/news/125104/solon-1-2-13-released
Recomendado
Clasificación