当前位置: 首页 > 知识库问答 >
问题:

无法在Spring云中调用RestEndpoint

傅元龙
2023-03-14

下面是链接中的Netflix Eureka的Spring云服务发现教程:https://howtodoinjava.com/spring/spring-cloud/spring-cloud-service-discovery-netflix-eureka/.

在源代码中,我简单地使用了sping-boot-starter-父version1.5.13。BUILD-SNAPSHOT而不是1.5.4。RELEASE,没有其他更改。

我试着打电话给spring eureka客户端学生服务,使用http://localhost:8098/getStudentDetailsForSchool/abcschool,但我没有看到生成任何日志,看起来没有呼叫要服务。

pom.xml

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-rest</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </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-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

应用性质

server.port=8098
spring.application.name=student-service
manahtml" target="_blank">gement.security.enabled=false

logging.level.com.example.*=DEBUG

eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
eureka.instance.lease-renewal-interval-in-seconds=1
eureka.instance.lease-expiration-duration-in-seconds=2

ontroller.java

@RestController
public class StudentServiceController {
    private static Map<String, List<Student>> schooDB = new HashMap<String, List<Student>>();

    static {
        schooDB = new HashMap<String, List<Student>>();

        List<Student> lst = new ArrayList<Student>();
        Student std = new Student("Sajal", "Class IV");
        lst.add(std);
        std = new Student("Lokesh", "Class V");
        lst.add(std);

        schooDB.put("abcschool", lst);

        lst = new ArrayList<Student>();
        std = new Student("Kajal", "Class III");
        lst.add(std);
        std = new Student("Sukesh", "Class VI");
        lst.add(std);

        schooDB.put("xyzschool", lst);
    }

    @RequestMapping(value = "/getStudentDetailsForSchool/{schoolname}", method = RequestMethod.GET)
    public List<Student> getStudents(@PathVariable String schoolname){
        System.out.println("Getting Student details for " + schoolname);
        List<Student> studentList = schooDB.get(schoolname);

        if (studentList == null) {
            studentList = new ArrayList<Student>();
            Student std = new Student("Not Found", "N/A");
            studentList.add(std);
        }
        return studentList;
    }
}

SpringEurekaClientStudentServiceApplication。JAVA

@SpringBootApplication
@EnableEurekaClient
public class SpringEurekaClientStudentServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringEurekaClientStudentServiceApplication.class, args);
    }
}

共有1个答案

魏俊茂
2023-03-14

请在包com中移动SpringEurekaClientStudentServiceApplication。howtodoitinjava而不是com。howtodoitinjava。示例

>

  • 如果您的其他软件包层次结构位于带有@SpringBootApplication注释的主应用程序下方,则隐式组件扫描将覆盖您。

    如果其他包中有bean/组件不是主包的子包,则应手动将它们添加
    @ComponentScan

    在您的情况下,您可以编写如下内容(如果您不想移动主类):

     @ComponentScan({“com.howtodoitinjava”})
    

  •  类似资料:
    • 我正在尝试在Spring Cloud Gateway中启用RequestRateLimiter。我havr配置了其他过滤器,甚至是自定义过滤器,但当我将其添加到我的路由中时: 我得到了这个异常(当然,如果我移除RequestRateLimiter筛选器并只保留StripPrefix条目,一切正常。我已经删除了异常的代码):

    • Spring Boot由maven插件启动。当访问localhost:8080/parse时,它会显示错误的模糊描述,但我在这里看不到stacktrace,在IntelliJ控制台输出中也看不到它。如何获取错误信息? 控制台输出: 网页 更新 配置

    • 我正在研究一个示例poc,我正在尝试集成Spring云api网关 在我的pom.xml中,我有 在我的应用程序中。yml我有 在我的主课上 我能够直接从它们各自的端口访问服务,但是当我试图从端口网关端口ie 9191访问api时,我得到 ***2022-09-08 16:23:34.644错误4128-[ctor-http-nio-3]a . w . r . e . abstracterrorwe

    • 我使用的是Spring云和安全示例。在本例中,我使用的是Spring Boot版本。Spring启动父版本到。当我更新endpoint后的依赖项时,就开始中断了。 我已经浏览了Spring Cloud Config-Encrypt密码和文档http://Cloud.Spring.io/spring-cloud-statist/finchley.release/single/spring-cloud

    • 问题内容: 在我的Android应用程序中,我无法使用JDK 1.6中的 String.isEmpty() 函数。Android 2.1 lib在java.lang.String类中没有此功能 我尝试将JRE系统库输入到我的项目中,因为它具有此功能,但是没有效果。 如何解决此问题并允许我的应用程序使用此功能? 问题答案: 如何解决此问题并允许我的应用程序使用此功能? 你不能 使用代替。它一直向下兼

    • 问题内容: 我使用的是UI.Bootstrap手风琴,我的标题定义如下: 当那显示解析为无。如果我在控制器中拨打相同长度的电话,我将获得预期的计数。有什么阻止方法调用在AngularJS中工作的吗? 使用该手风琴的其余部分的行为均符合预期,因此我知道它的填充正确。该数据结构基本上看起来像这样: 问题答案: 是的,因为这是的一部分,而angular无法根据范围评估该表达式。当您在绑定中指定时,ang