Solon 1.2.13 wird veröffentlicht und ermöglicht die Kommunikation mit Spring Boot

Solon ist ein Mikroentwicklungsframework, das Springboot ähnelt. Seit dem Start des Projekts im Jahr 2018 wurde auf eine große Anzahl früherer Arbeiten verwiesen, es dauerte zwei Jahre und mehr als 3.500 Commits, der Kernel verfügt über eine Zahl von 0,1 m, super hohe Web-Running-Scores und eine gute Benutzererfahrung.

Solon betont das Prinzip von Zurückhaltung + Einfachheit + Offenheit und strebt nach einer kleineren, schnelleren und freieren Erfahrung.

Das sogenannte kleinere:

Der Kernel ist 0,1 m groß und die kleinste Webentwicklungseinheit ist 0,2 m groß (im Vergleich zum Springboot-Projektpaket ist er so klein, dass er vernachlässigt werden kann).

Das sogenannte schnellere:

Der lokale Helloworld-Test Qps kann bis zu 120.000 erreichen. Kann sich beziehen auf: " helloworld_wrk_test "

Die sogenannte mehr Freiheit: (freie Code-Manipulation)

// 除了注入模式之外,还可以按需手动
//
//手动获取配置
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()));

Wichtige Änderungen in dieser Version:

1. Plug-In hinzufügen: springboot-solon-plugin (um Interoperabilität mit Springboot zu erreichen)

  • Stellen Sie den ca. 0,1 m großen Rahmen vor
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>springboot-solon-plugin</artifactId>
    <version>1.2.13</version>
</dependency>

Wenn Sie andere Plugins von Solon importieren müssen, passt sich Solon an ein kleineres Framework an?

  • Verwenden Sie nach dem Einbetten in das Springboot-System gleichzeitig die Containerressourcen und -funktionen der beiden Frameworks oder mischen Sie sie während der Übergangszeit vorübergehend

1) Starten Sie die Anwendung

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

2) Definieren Sie Springboog-Komponenten

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) Verwenden Sie die Komponenten im Springboot-Container in der Solon-Klasse

//此处为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) Verwenden Sie Solons Handschriftfunktion in der Springboot-Klasse

@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);
    }
}

"Das Obige ist nur für Demonstrationseffekte gedacht und passt möglicherweise nicht zur realen Szene."

2. Anpassung an Konfigurations- und Registrierungsdienste von Drittanbietern, Konsul-Framework: Konsul-Solon-Plugin

  • Dieses Framework wird von Community-Entwicklern bereitgestellt, Solons erstem Community-Beitrag. . . vielen Dank

1) Konfigurationsbeispiel

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) Verwenden Sie ein Beispiel

@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();
    }
}

Ich denke du magst

Origin www.oschina.net/news/125104/solon-1-2-13-released
Empfohlen
Rangfolge