• 看官方文档学习springcloud搭建


      很多java的朋友学习新知识时候去百度,看了之后一知半解,不知道怎么操作,不知道到底什么什么东西,那么作为java码农到底该怎么学习额  

    一  百度是对还是错呢?

      百度是一个万能的工具,当然是对也是错的,对于一些小知识,是可以百度的,但是例如学习springcloud,那么最好是进入官方文档进行查看,可以清晰查看到当前版本信息

    因为很多时候,在版本迭代时候出现问题,那么看官方文档就可以很清晰知道这个问题。

      那么问题来了,英文不好,怎么处理?

      不用太担心,可以使用翻译工具:

      

     可能有时候不准,但是我们作为程序员的应该知道如何处理,将不懂的单词进行留意,再去看文档。

    二 看文档搭建eureka注册中心:

    首先进入springcloud官网,eureka是netlex公司开发的,所以进入找相关模块,当然也有阿里巴巴的,

    https://cloud.spring.io/spring-cloud-static/spring-cloud-netflix/2.1.3.RELEASE/single/spring-cloud-netflix.html#netflix-eureka-server-starter

    再找模块     

    Service Discovery: Eureka Server

    相信大家知道这个什么意思了,服务发现,eureka服务端

    我们可以使用idea去创建项目,

    主pom,进行依赖控制,当然也可以这样,将他们分开,进行单独项目进行配置,那么可以单独建立,一个就不能拿到公司的所有的项目

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <packaging>pom</packaging>
        <modules>
            <module>springrurekaserver</module>
        </modules>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.8.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.cxy</groupId>
        <artifactId>springcloudlearning</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>springcloudlearning</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
            <spring-cloud.version>Greenwich.SR3</spring-cloud.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
            </dependency>
        </dependencies>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>${spring-cloud.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
        <!--<repositories>
            <repository>
                <id>spring-milestones</id>
                <name>Spring Milestones</name>
                <url>https://repo.spring.io/milestone</url>
            </repository>
        </repositories>-->
    
    </project>
        <!--<repositories>
            <repository>
                <id>spring-milestones</id>
                <name>Spring Milestones</name>
                <url>https://repo.spring.io/milestone</url>
            </repository>
        </repositories>-->

    这个部分为什么注释呢,由于在选版本时候,idea自己给我选择了版本,所以带出来了,官网这个不安全的版本。

    然后参照官方:

    引入依赖,所以这里就引入依赖:

    然后再创建application。yml

    server:
      port: 8761
    
    eureka:
      instance:
        hostname: localhost
      client:
        registerWithEureka: false
        fetchRegistry: false
        serviceUrl:
          defaultZone: http://127.0.0.1:8761/eureka/

     然后再创建

    package com.cxy;
    
    import org.springframework.boot.Banner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.SpringBootVersion;
    import org.springframework.boot.WebApplicationType;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.builder.SpringApplicationBuilder;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
    
    @SpringBootApplication
    @EnableEurekaServer
    public class EurekaApplication {
        public static void main(String[] args) {
            new SpringApplicationBuilder(EurekaApplication.class)
                   // .web(WebApplicationType.SERVLET)
                    .main(SpringBootVersion.class)
                    .run(args);
    /*
            SpringApplicationBuilder springApplicationBuilder = new SpringApplicationBuilder(EnableEurekaServer.class);
            SpringApplicationBuilder web = springApplicationBuilder.web(webappl);
            web.run(args);
    */
    
            SpringApplication.run(EurekaApplication.class,args);
        }
    }

    可以看下官方:

     其实在那个web方法地方的时候会报错,所以我们需要点进源码看下:

    传入了一个webApplicationType   

    这个是什么东西呢:

    /*
     * Copyright 2012-2019 the original author or authors.
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *      https://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    
    package org.springframework.boot;
    
    import org.springframework.util.ClassUtils;
    
    /**
     * An enumeration of possible types of web application.
     *
     * @author Andy Wilkinson
     * @author Brian Clozel
     * @since 2.0.0
     */
    public enum WebApplicationType {
    
        /**
         * The application should not run as a web application and should not start an
         * embedded web server.
         */
        NONE,
    
        /**
         * The application should run as a servlet-based web application and should start an
         * embedded servlet web server.
         */
        SERVLET,
    
        /**
         * The application should run as a reactive web application and should start an
         * embedded reactive web server.
         */
        REACTIVE;
    
        private static final String[] SERVLET_INDICATOR_CLASSES = { "javax.servlet.Servlet",
                "org.springframework.web.context.ConfigurableWebApplicationContext" };
    
        private static final String WEBMVC_INDICATOR_CLASS = "org.springframework." + "web.servlet.DispatcherServlet";
    
        private static final String WEBFLUX_INDICATOR_CLASS = "org." + "springframework.web.reactive.DispatcherHandler";
    
        private static final String JERSEY_INDICATOR_CLASS = "org.glassfish.jersey.servlet.ServletContainer";
    
        private static final String SERVLET_APPLICATION_CONTEXT_CLASS = "org.springframework.web.context.WebApplicationContext";
    
        private static final String REACTIVE_APPLICATION_CONTEXT_CLASS = "org.springframework.boot.web.reactive.context.ReactiveWebApplicationContext";
    
        static WebApplicationType deduceFromClasspath() {
            if (ClassUtils.isPresent(WEBFLUX_INDICATOR_CLASS, null) && !ClassUtils.isPresent(WEBMVC_INDICATOR_CLASS, null)
                    && !ClassUtils.isPresent(JERSEY_INDICATOR_CLASS, null)) {
                return WebApplicationType.REACTIVE;
            }
            for (String className : SERVLET_INDICATOR_CLASSES) {
                if (!ClassUtils.isPresent(className, null)) {
                    return WebApplicationType.NONE;
                }
            }
            return WebApplicationType.SERVLET;
        }
    
        static WebApplicationType deduceFromApplicationContext(Class<?> applicationContextClass) {
            if (isAssignable(SERVLET_APPLICATION_CONTEXT_CLASS, applicationContextClass)) {
                return WebApplicationType.SERVLET;
            }
            if (isAssignable(REACTIVE_APPLICATION_CONTEXT_CLASS, applicationContextClass)) {
                return WebApplicationType.REACTIVE;
            }
            return WebApplicationType.NONE;
        }
    
        private static boolean isAssignable(String target, Class<?> type) {
            try {
                return ClassUtils.resolveClassName(target, null).isAssignableFrom(type);
            }
            catch (Throwable ex) {
                return false;
            }
        }
    
    }

    枚举类,所以看下注释:

     

    找到了第二种,可以看下,所以传入这个类型,

    当然也可以采用其他方式进行:

    例如:

     官方启动会构建很多东西,可以加载spring的版本,还有配置,这些:

  • 相关阅读:
    java int转byte数组
    业务网关-操作手册
    业务网关-配置
    H2数据库的导入、导出(CSV)
    sequelize踩坑处理:时间格式化
    引入koa-static处理静态资源
    MySql利用case when实现批量更新多条记录的不同值实现方法
    Sequelize增删改查及批量新增或批量更新(bulkCreate的updateOnDuplicate)等常用接口
    数据结构队列、双端队列、队列系算法题解析
    配置webpack中externals来减少打包后vendor.js的体积
  • 原文地址:https://www.cnblogs.com/xiufengchen/p/11754427.html
Copyright © 2020-2023  润新知