Inhaltsverzeichnis
@EnableFeignClients" >@EnableFeignClients
@Import()@Import()" >@Import()@Import()
openfeign中作用" >openfeign中作用
registerDefaultConfiguration(metadata, registry)" >registerDefaultConfiguration(metadata, registry)
registerFeignClients(metadata, registry)" >registerFeignClients(metadata, registry)
Heim Java javaLernprogramm Analyse des Spring Cloud-Quellcodes: Teil 1

Analyse des Spring Cloud-Quellcodes: Teil 1

Aug 15, 2023 pm 04:04 PM
spring cloud

Lachen Sie nicht über Freunde, die den Quellcode lesen. Heutzutage geht es bei Interviews nur um achtteilige Aufsätze und es geht mehr darum, Projektfragen, Quellcode und Fragen zu stellen. Mir bleibt nichts anderes übrig, als Räder herzustellen, sonst wäre es sehr ermüdend und langweilig!

Persönlich denke ich, dass die Voraussetzung für das Lesen des Quellcodes darin besteht, ihn verwenden zu können. Wenn Sie damit vertraut sind, können Sie erraten, wie andere ihn implementieren. Wenn es relevante offizielle Dokumente gibt, lesen Sie die offiziellen Dokumente.

Allerdings ist es schade, dass viele offizielle Dokumente schlecht geschrieben sind, so dass man nach längerer Lektüre verwirrt ist.

Vor Kurzem studiere ich 35, 0,05);Schriftfamilie: „Operator Mono“, Consolas, Monaco, Menlo, Monospace;Wortumbruch: Break-All;Farbe: RGB(239, 112, 96);“>openfeign Quellcode Zu diesem Zeitpunkt habe ich eine Schlüsselanmerkung im Quellcode gefunden: @Import . openfeign源码的时候,发现在源码中有个关键注解:@Import

项目启动类:

/**
 * @author tianwc  公众号:java后端技术全栈、面试专栏
 * @version 1.0.0
 * @date 2023年07月07日 16:47
 * 在线刷题 1200+题和1000+篇干货文章:<a href="http://woaijava.cc/">博客地址</a>
 */
@EnableFeignClients(basePackages = {"com.tian.feign"})
@SpringBootApplication()
public class    MqApplication {
    public static void main(String[] args) {
        SpringApplication.run(MqApplication.class, args);
    }
}
Nach dem Login kopieren

然后,就是我们的feignclient接口:

/**
 * @author tianwc  公众号:java后端技术全栈、面试专栏
 * @version 1.0.0
 * @date 2023年07月07日 16:47
 * 在线刷题 1200+题和1000+篇干货文章:<a href="http://woaijava.cc/">博客地址</a>
 */
@FeignClient(contextId = "userFeignClient", value = "charge-user-service")
public interface UserFeignClient {

    /**
     * 邀请成功增加收益
     *
     * @param invitedDto 邀请增加收益
     * @return 邀请成功
     */
    @PostMapping("/user/invited/register")
    CommonResult<Boolean> invitedRegister(@RequestBody InvitedDto invitedDto);
}
Nach dem Login kopieren

使用案例:

/**
 * @author tianwc  公众号:java后端技术全栈、面试专栏
 * @version 1.0.0
 * @date 2023年07月07日 16:47
 * 在线刷题 1200+题和1000+篇干货文章:<a href="http://woaijava.cc/">博客地址</a>
 */
@RestController
@RequestMapping("/user")
public class UserController {

    @Resource
    UserFeignClient userFeignClient;

    @PostMapping("/invited")
    public CommonResult invitedRegister(){
        //省略不想搞的代码
        return userFeignClient.invitedRegister(invitedDto);
    }

}
Nach dem Login kopieren

从上面的代码中,我们可以看出openfeign关键代码有:

@EnableFeignClients(basePackages = {"com.tian.feign"})

@FeignClient(contextId = "userFeignClient", value = "charge-user-service")

userFeignClient.invitedRegister(invitedDto);

Projektstartklasse: 🎜
/**
 * @author tianwc  公众号:java后端技术全栈、面试专栏
 * @version 1.0.0
 * @date 2023年07月07日 16:47
 * 在线刷题 1200+题和1000+篇干货文章:<a href="http://woaijava.cc/">博客地址</a>
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Import(FeignClientsRegistrar.class)
public @interface EnableFeignClients { 
 String[] value() default {}; 
 String[] basePackages() default {}; 
 Class<?>[] basePackageClasses() default {}; 
 Class<?>[] defaultConfiguration() default {}; 
 Class<?>[] clients() default {};
}
Nach dem Login kopieren
Nach dem Login kopieren
🎜Dann ist hier unser
@Import(FeignClientsRegistrar.class)
Nach dem Login kopieren
Nach dem Login kopieren
🎜Anwendungsfall: 🎜
/**
 * @author tianwc  公众号:java后端技术全栈、面试专栏
 * @version 1.0.0
 * @date 2023年07月07日 16:47
 * 在线刷题 1200+题和1000+篇干货文章:<a href="http://woaijava.cc/">博客地址</a>
 */
@Override
public void registerBeanDefinitions(AnnotationMetadata metadata,
                                    BeanDefinitionRegistry registry) {
    registerDefaultConfiguration(metadata, registry);
    registerFeignClients(metadata, registry);
}
Nach dem Login kopieren
Nach dem Login kopieren
🎜Aus dem obigen Code können wir das sehenopenfeignDie Schlüsselcodes sind: 🎜

userFeignClient.invitedRegister(invitedDto);🎜

@EnableFeignClients

@EnableFeignClients这个注解在启动类上,我们肯定要重点关注。

小技巧:凡是以@Enable开头的各种注解基本上都是开启xxxx。比如:@EnableFeignClients表示开启feign客户端。

我们进入@EnableFeignClients

/**
 * @author tianwc  公众号:java后端技术全栈、面试专栏
 * @version 1.0.0
 * @date 2023年07月07日 16:47
 * 在线刷题 1200+题和1000+篇干货文章:<a href="http://woaijava.cc/">博客地址</a>
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Import(FeignClientsRegistrar.class)
public @interface EnableFeignClients { 
 String[] value() default {}; 
 String[] basePackages() default {}; 
 Class<?>[] basePackageClasses() default {}; 
 Class<?>[] defaultConfiguration() default {}; 
 Class<?>[] clients() default {};
}
Nach dem Login kopieren
Nach dem Login kopieren

我们通常只需要关心属性basePackages,表示我们需要扫描的包目录。

如果既没有指定basePackages,也没有指定basePackageClasses,则采用启动类所在的目录作为包扫描路径。默认是这种情况。

本文重点来了,在这个注解@EnableFeignClients上有个注解@Import(FeignClientsRegistrar.class),这里到底是有什么作用?

@Import()@Import()

@Import()注解是在spring 3.0版本中引入的,字面意义就是导入.

@Import注解的全类名是org.springframework.context.annotation.Import。其只有一个默认的value属性,该属性类型为Class<?>[],表示可以传入一个或多个Class对象。

通过注释可以看出,该注解有如下作用:

可以导入一个或多个组件类(通常是@Configuration配置类)该注解的功能与Spring XML中的<import/>元素相同。可以导入@Configuration配置类、ImportSelectImportBeanDefinitionRegistrar的实现类。

从spring 4.2版本开始,还可以引用常规组件类(普通类),该功能类似于AnnotationConfigApplicationContext.register()方法。

该注解可以在类中声明,也可以在元注解中声明。如果需要导入XML或其他非@Configuration定义的资源,可以使用@ImportResource

@Import() Die Annotation wurde in der Frühjahrsversion 3.0 eingeführt und hat wörtlich die Bedeutung import.

🎜Der vollständige Klassenname der @Import-Annotation lautet org.springframework.context.annotation.Import. Es gibt nur ein Standardwertattribut, nämlich <import/> Elemente sind gleich . Sie können ImportSelect und ImportBeanDefinitionRegistrar Implementierungsklasse. 🎜🎜Ab Frühjahr 4.2 können Sie auch auf reguläre Komponentenklassen (gewöhnliche Klassen) verweisen. Diese Funktion ähnelt AnnotationConfigApplicationContext.register() Methode. 🎜🎜Diese Annotation kann in der Klasse oder in einer Meta-Annotation deklariert werden. Wenn Sie XML oder andere Nicht-, 35, 0.05);font-family: „Operator Mono“, Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(239, 112, 96) importieren müssen );">@Configuration Für definierte Ressourcen können Sie @ImportResource annotation . 🎜🎜Es gibt normalerweise drei Möglichkeiten, es zu verwenden: 🎜
  • @Import一个普通类 spring会将该类加载到spring容器中
  • @Import一个类,该类实现了ImportBeanDefinitionRegistrar接口,在重写的registerBeanDefinitions方法里面,能拿到BeanDefinitionRegistry的注册器,能手工往beanDefinitionMap中注册 beanDefinition
  • @Import一个类 该类实现了ImportSelector 重写selectImports方法该方法返回了String[]数组的对象,数组里面的类都会注入到spring容器当中。

下面我们来聊聊@Import在openfeign的这里是起到什么作用。

openfeign中作用

回答上面的代码里

@Import(FeignClientsRegistrar.class)
Nach dem Login kopieren
Nach dem Login kopieren

这里导入的是FeignClientsRegistrar类,我们再来看看他的类关系图:

Analyse des Spring Cloud-Quellcodes: Teil 1

从类关系图来看,FeignClientsRegistrar实现了ImportBeanDefinitionRegistrar接口。再结合@Import的三种使用方式中的第二种方式,能手工往beanDefinitionMap中注册 beanDefinition

/**
 * @author tianwc  公众号:java后端技术全栈、面试专栏
 * @version 1.0.0
 * @date 2023年07月07日 16:47
 * 在线刷题 1200+题和1000+篇干货文章:<a href="http://woaijava.cc/">博客地址</a>
 */
@Override
public void registerBeanDefinitions(AnnotationMetadata metadata,
                                    BeanDefinitionRegistry registry) {
    registerDefaultConfiguration(metadata, registry);
    registerFeignClients(metadata, registry);
}
Nach dem Login kopieren
Nach dem Login kopieren

这个方法registerBeanDefinitions()是feign的核心入口方法,其中会做两件事:

注册默认的配置和注册所有的FeignClient。

registerDefaultConfiguration(metadata, registry)

这个方法是负责注册OpenFeign的默认配置 ,逻辑相对简单:

private void registerDefaultConfiguration(AnnotationMetadata metadata,
                                          BeanDefinitionRegistry registry) {
    //获取@EnableFeignClients的全部属性
    //@EnableFeignClients(basePackages = {"com.tian.feign"}) 
    //这里的basePackages就是我们指定的熟悉
    Map<String, Object> defaultAttrs = metadata
        .getAnnotationAttributes(EnableFeignClients.class.getName(), true);

    if (defaultAttrs != null && defaultAttrs.containsKey("defaultConfiguration")) {
        String name;
        if (metadata.hasEnclosingClass()) {
            name = "default." + metadata.getEnclosingClassName();
        }
        else {
            name = "default." + metadata.getClassName();
        }
        registerClientConfiguration(registry, name,
                                    defaultAttrs.get("defaultConfiguration"));
    }
}
Nach dem Login kopieren

defaultAttrs中内容如下:

Analyse des Spring Cloud-Quellcodes: Teil 1

但是这里我们只关注defaultConfiguration,我们并有对其进行设置,所以我们可以忽略他。重点是下面这个方法。

registerFeignClients(metadata, registry)

这里就是项目启动时和openfeign相关的核心代码,这也是@EnableFeignClients@FeignClient两个注解关联起来的地方。

我们进入源码中:

public void registerFeignClients(AnnotationMetadata metadata,
                                 BeanDefinitionRegistry registry) {
    
    ClassPathScanningCandidateComponentProvider scanner = getScanner();
    scanner.setResourceLoader(this.resourceLoader);

    Set<String> basePackages;

    Map<String, Object> attrs = metadata
        .getAnnotationAttributes(EnableFeignClients.class.getName());
    AnnotationTypeFilter annotationTypeFilter = new AnnotationTypeFilter(
        FeignClient.class);
    final Class<?>[] clients = attrs == null ? null
        : (Class<?>[]) attrs.get("clients");
    if (clients == null || clients.length == 0) {
        scanner.addIncludeFilter(annotationTypeFilter);
        basePackages = getBasePackages(metadata);
    }
    else {
        final Set<String> clientClasses = new HashSet<>();
        basePackages = new HashSet<>();
        for (Class<?> clazz : clients) {
            basePackages.add(ClassUtils.getPackageName(clazz));
            clientClasses.add(clazz.getCanonicalName());
        }
        AbstractClassTestingTypeFilter filter = new AbstractClassTestingTypeFilter() {
            @Override
            protected boolean match(ClassMetadata metadata) {
                String cleaned = metadata.getClassName().replaceAll("\\$", ".");
                return clientClasses.contains(cleaned);
            }
        };
        scanner.addIncludeFilter(
            new AllTypeFilter(Arrays.asList(filter, annotationTypeFilter)));
    }

    for (String basePackage : basePackages) {
        Set<BeanDefinition> candidateComponents = scanner
            .findCandidateComponents(basePackage);
        for (BeanDefinition candidateComponent : candidateComponents) {
            if (candidateComponent instanceof AnnotatedBeanDefinition) {
                // verify annotated class is an interface
                AnnotatedBeanDefinition beanDefinition = (AnnotatedBeanDefinition) candidateComponent;
                AnnotationMetadata annotationMetadata = beanDefinition.getMetadata();
                Assert.isTrue(annotationMetadata.isInterface(),
                              "@FeignClient can only be specified on an interface");

                Map<String, Object> attributes = annotationMetadata
                    .getAnnotationAttributes(
                    FeignClient.class.getCanonicalName());

                String name = getClientName(attributes);
                registerClientConfiguration(registry, name,
                                            attributes.get("configuration"));

                registerFeignClient(registry, annotationMetadata, attributes);
            }
        }
    }
}
Nach dem Login kopieren

代码一行一行看是不是觉得很累,我给你总结好了。

上面的方法分为以下七个步骤:

  • Zuerst erhalten Sie basePackages); <code style='font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(239, 112, 96);'>@EnableFeignClients注解的所有属性,主要为了拿到扫描包路径(basePackages);
  • 因为一般不会在@EnableFeignClients注解中配置clients属性,所以会进入到clients属性为空时的逻辑;
  • 然后通过getScanner()方法获取扫描器:ClassPathScanningCandidateComponentProvider,并将上下文AnnotationConfigServletWebServerApplicationContext作为扫描器的ResourceLoader
  • 接着给扫描器ClassPathScanningCandidateComponentProvider添加一个注解过滤器(AnnotationTypeFilter),只过滤出包含@FeignClient注解的BeanDefinition
  • 再通过getBasePackages(metadata)方法获取@EnableFeingClients
  • 🎜, da es im Allgemeinen nicht in @EnableFeignClients Konfigurieren Sie das Client-Attribut in der Annotation, sodass die Logik eingegeben wird, wenn das Client-Attribut leer ist. 🎜🎜🎜🎜 Dann übergeben Sie getScanner() Methode ruft den Scanner ab: ClassPathScanningCandidateComponentProvider und Kontext AnnotationConfigServletWebServerApplicationContextAls ScannerResourceLoader;🎜🎜🎜🎜Dann geben Sie dem ScannerClassPathScanningCandidateComponentProviderFügen Sie einen Anmerkungsfilter (AnnotationTypeFilter) hinzu, um nur Dateien herauszufiltern, die @FeignClient annotationBeanDefinition; 🎜🎜🎜🎜 und übergeben Sie dann getBasePackages(metadata) Methode erhältDer Paket-Scan-Pfad oder die Scan-Klasse, die in der Annotation @EnableFeingClients angegeben ist; falls nicht abgerufen, wird standardmäßig der Paketpfad gescannt, in dem sich die Startklasse befindet; 🎜🎜
  • Dann geben Sie die Kernlogik ein: pass @FeignClientAnnotierte und qualifizierte Schnittstelle für Assembly;
  • scanner.findCandidateComponents(basePackage)方法从包路径下扫描出所有标注了@FeignClient注解并符合条件装配的接口;
  • 最后将FeignClientConfigurationBeanDefinitionRegistry中注册一下,再对FeignClient做真正的注册操作。
  • 总结

    openfeign源码中的@Import注解在这里的作用就是将扫描到带有FeignClient

    Schließlich FeignClientConfiguration in Registrieren Sie es in BeanDefinitionRegistry und dann FeignClient führt den eigentlichen Registrierungsvorgang durch.

    Zusammenfassung

    InopenfeignDie @Import-Annotation im Quellcode wird hier verwendet, um die Dateien mit FeignClientAlle annotierten Schnittstellenklassen werden in Form von Beans registriert Der Feder-IOC-Container.

    🎜 Lassen Sie mich noch einmal betonen, wie die @Import-Annotation verwendet wird: 🎜
    • @Import一个普通类 spring会将该类加载到spring容器中
    • @Import一个类,该类实现了ImportBeanDefinitionRegistrar接口,在重写的registerBeanDefinitions方法里面,能拿到BeanDefinitionRegistry的注册器,能手工往beanDefinitionMap中注册 beanDefinition
    • @Import一个类 该类实现了ImportSelector 重写selectImports
    : rgba(27, 31, 35, 0.05);font-family: „Operator Mono“, Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(239, 112, 96);“> @ImportEine Klasse, die beanDefinition

    @ImportEine Klasse, die ImportSelector RewriteselectImports Methode Diese Methode gibt das Objekt des String[]-Arrays zurück, und die Klassen im Array werden in den Spring-Container eingefügt .

    Okay, das ist alles, was wir heute teilen können. Es gibt viele interessante Dinge in diesem Openfeign, wir werden sie das nächste Mal teilen! 🎜🎜🎜🎜🎜🎜🎜

    Das obige ist der detaillierte Inhalt vonAnalyse des Spring Cloud-Quellcodes: Teil 1. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

    Heiße KI -Werkzeuge

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    AI Hentai Generator

    AI Hentai Generator

    Erstellen Sie kostenlos Ai Hentai.

    Heißer Artikel

    R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
    3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Beste grafische Einstellungen
    3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
    3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25: Wie man alles in Myrise freischaltet
    4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

    Heiße Werkzeuge

    Notepad++7.3.1

    Notepad++7.3.1

    Einfach zu bedienender und kostenloser Code-Editor

    SublimeText3 chinesische Version

    SublimeText3 chinesische Version

    Chinesische Version, sehr einfach zu bedienen

    Senden Sie Studio 13.0.1

    Senden Sie Studio 13.0.1

    Leistungsstarke integrierte PHP-Entwicklungsumgebung

    Dreamweaver CS6

    Dreamweaver CS6

    Visuelle Webentwicklungstools

    SublimeText3 Mac-Version

    SublimeText3 Mac-Version

    Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

    Verwenden Sie Spring Cloud geschickt, um Lastausgleichsprobleme in der Microservice-Architektur zu lösen Verwenden Sie Spring Cloud geschickt, um Lastausgleichsprobleme in der Microservice-Architektur zu lösen Jun 23, 2023 pm 01:40 PM

    Da die Komplexität von Unternehmensanwendungen immer weiter zunimmt, beginnen immer mehr Unternehmen, Anwendungen in mehrere Microservices aufzuteilen und den gesamten Geschäftsprozess durch die Zusammenarbeit zwischen Microservices abzuschließen. Dieser Architekturansatz kann Anwendungen stabiler und skalierbarer machen, bringt aber auch einige neue Probleme mit sich, wie z. B. Lastausgleich, Diensterkennung usw. In diesem Artikel wird erläutert, wie Sie mit Spring Cloud das Lastausgleichsproblem unter der Microservice-Architektur lösen können. Was ist Lastausgleich? Unter Lastausgleich (LoadBalancing) versteht man den Ausgleich mehrerer Server und Netzwerke

    Analyse des Spring Cloud-Quellcodes: Teil 1 Analyse des Spring Cloud-Quellcodes: Teil 1 Aug 15, 2023 pm 04:04 PM

    Persönlich denke ich, dass die Voraussetzung für das Lesen des Quellcodes darin besteht, dass Sie ihn verwenden können. Wenn Sie damit vertraut sind, können Sie erraten, wie andere ihn implementiert haben. Wenn es relevante offizielle Dokumente gibt, lesen Sie die offiziellen Dokumente.

    Serviceorientierte Spring Cloud-Microservice-Entwicklung Serviceorientierte Spring Cloud-Microservice-Entwicklung Jun 23, 2023 pm 12:30 PM

    Mit der Entwicklung des Internets und der kontinuierlichen Aktualisierung der Technologie können herkömmliche Einzelanwendungen die Benutzeranforderungen nicht mehr erfüllen, und es ist das Konzept der Microservices entstanden. SpringCloud ist ein von Pivotal eingeführtes Microservice-Entwicklungstoolkit, das Entwicklern eine äußerst bequeme Möglichkeit bietet, Microservice-Architekturanwendungen zu erstellen, bereitzustellen und zu verwalten. In diesem Artikel wird die serviceorientierte SpringCloud-Microservice-Entwicklung ausführlich vorgestellt, einschließlich des Konzepts und der Architektur von SpringCloud, des Microservice-Entwicklungsprozesses und

    So entwickeln Sie mit Java eine Container-Orchestrierungsanwendung basierend auf Spring Cloud Kubernetes So entwickeln Sie mit Java eine Container-Orchestrierungsanwendung basierend auf Spring Cloud Kubernetes Sep 20, 2023 am 11:15 AM

    So entwickeln Sie mit Java eine Container-Orchestrierungsanwendung auf Basis von Spring Cloud Kubernetes. Mit der Entwicklung und weit verbreiteten Anwendung der Container-Technologie sind Container-Orchestrierungstools zu einem unverzichtbaren Bestandteil für Entwickler geworden. Als eines der beliebtesten Tools zur Container-Orchestrierung hat sich Kubernetes zum Industriestandard entwickelt. In diesem Zusammenhang können wir durch die Kombination von Spring Cloud und Kubernetes problemlos Anwendungen entwickeln, die auf Container-Orchestrierung basieren. Dieser Artikel wird im Detail vorgestellt

    Bereitstellung und Betrieb der Spring Cloud-Microservice-Architektur Bereitstellung und Betrieb der Spring Cloud-Microservice-Architektur Jun 23, 2023 am 08:19 AM

    Mit der rasanten Entwicklung des Internets nimmt die Komplexität von Unternehmensanwendungen von Tag zu Tag zu. Als Reaktion auf diese Situation entstand die Microservice-Architektur. Aufgrund seiner Modularität, unabhängigen Bereitstellung und hohen Skalierbarkeit ist es heute die erste Wahl für die Anwendungsentwicklung auf Unternehmensebene. Als hervorragende Microservice-Architektur hat Spring Cloud in praktischen Anwendungen große Vorteile gezeigt. In diesem Artikel werden die Bereitstellung sowie der Betrieb und die Wartung der SpringCloud-Microservice-Architektur vorgestellt. 1. Stellen Sie die SpringCloud-Microservice-Architektur SpringCloud bereit

    Einführung in das Spring Cloud-Framework in Java-Sprache Einführung in das Spring Cloud-Framework in Java-Sprache Jun 09, 2023 pm 10:54 PM

    Einführung in das SpringCloud-Framework in der Java-Sprache Mit der Popularität von Cloud Computing und Microservices ist das SpringCloud-Framework zu einem der bevorzugten Frameworks für die Erstellung cloudnativer Anwendungen in der Java-Sprache geworden. In diesem Artikel werden die Konzepte und Funktionen des Spring Cloud-Frameworks sowie die Verwendung von Spring Cloud zum Aufbau einer Microservice-Architektur vorgestellt. Einführung in SpringCloud Das SpringCloud-Framework ist ein Microservice-Framework, das auf SpringBoot basiert. es ist

    Spring Cloud-Microservice-Praxis zur Implementierung verteilter Sperren Spring Cloud-Microservice-Praxis zur Implementierung verteilter Sperren Jun 22, 2023 pm 11:28 PM

    Mit der Popularität der Microservice-Architektur beginnen immer mehr Unternehmensentwicklungsteams, Spring Cloud zum Aufbau ihrer eigenen Microservice-Systeme zu nutzen. In einer verteilten Umgebung ist die Implementierung verteilter Sperren eine wichtige technische Herausforderung. In diesem Artikel wird vorgestellt, wie Microservice-Praktiken verteilter Sperren im Spring Cloud-Framework implementiert werden. Zuerst müssen wir verstehen, was eine verteilte Sperre ist. Die verteilte Sperre ist eine Technologie zum Schutz des Zugriffs auf gemeinsam genutzte Ressourcen. Sie kann sicherstellen, dass in einer verteilten Umgebung nicht mehrere Knoten gleichzeitig dieselbe Ressource ändern oder modifizieren.

    Die Kombination aus Spring Cloud-Microservices und Komponentisierung Die Kombination aus Spring Cloud-Microservices und Komponentisierung Jun 23, 2023 am 10:21 AM

    Mit der kontinuierlichen Weiterentwicklung der Internet-Technologie beginnen immer mehr Unternehmen, Microservice-Architekturen zum Aufbau ihrer Systeme zu übernehmen. SpringCloud ist ein Microservices-Framework, das sich in diesem Zusammenhang schnell entwickelt hat. Auf dieser Grundlage wird in diesem Artikel die Kombination von SpringCloud-Mikrodiensten und Komponentisierung erörtert und deren Vorteile und Implementierungsmethoden analysiert. 1. Einführung in SpringCloud-Microservices SpringCloud ist eine aktualisierte Version des SpringBoot-Projekts. Es bietet eine große Anzahl von Tools.

    See all articles