初学springboot想写一个简单的接口,请问哪里错了,为什么接口不显示数据

Application.java

package com.spring.inter.starter;  
  
import org.springframework.boot.SpringApplication;  
import org.springframework.boot.autoconfigure.SpringBootApplication;  
import org.springframework.context.annotation.ComponentScan;  
  
/\*\*  
 \* Spring boot 入口启动程序,sprint boot内置了tomcat \* @author Administrator  
 \*/  
@SpringBootApplication  
public class Application {  
    public static void main(String\[\] args) {  
        SpringApplication.run(Application.class,args);  
  }  
}
package com.spring.inter.controller;  
  
import java.util.HashMap;  
import org.springframework.web.bind.annotation.GetMapping;  
import org.springframework.web.bind.annotation.RequestMapping;  
import org.springframework.web.bind.annotation.RestController;  
  
@RestController  
@RequestMapping("/employee")  
public class EmployeeController {  
  
    @GetMapping  
  public HashMap<String, String> index(){  
        HashMap<String, String> hashmap = new HashMap<String, String>();  
  hashmap.put("姓名", "王二");  
  hashmap.put("年龄", "27");  
  hashmap.put("工龄", "6");  
  
 return hashmap;  
  }  
}

application.properties文件

server.port\=8083  
  
spring.jpa.show-sql \= true  
logging.level.org.springframework.data\=DEBUG  
spring.jpa.hibernate.ddl-auto\=  
  
spring.datasource.url\=jdbc:mysql://localhost:3306/test  
spring.datasource.username\=root  
spring.datasource.password\=jason  
spring.datasource.driver-class-name\=com.mysql.jdbc.Driver

启动Application.java文件,显示如下图片

501.png

阅读 2.7k
3 个回答

Spring Boot 会从启动类(即你的 Application)所在的包开始向下扫描带有特定注解(诸如 @Controller 之类)的类,由于你的启动类在 com.spring.inter.starter 内,Spring Boot 就只会自动扫描 com.spring.inter.starter 下的类文件而你的 Controller 并不在这里所以扫描不到也就注册不了.

解决办法有二:

  1. 如 @小刘 所说,手动指定包扫描的起始路径;
  2. 将启动类挪至整个项目的 src 目录下,这样就能正常扫描到了.

我复制你的代码建了一个新项目,发现是你的端口配置错误了。

server.port\=8083  

为什么有个斜杠?
有个斜杠spring就无法识别你的端口是8083,它启动的时候将继续使用默认端口8080. 你可以认真检查一下你的程序跑起来之后,控制台打印出来的端口是不是8083.

INFO 57601 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''

程序是用8080端口启起来的,而你用了8083去访问,所以就遇到了你截图的错误。

加一行代码就可以了@ComponentScan(basePackages\= {"com.spring.inter.controller"})//扫描组件

package com.spring.inter.starter;  
  
import org.springframework.boot.SpringApplication;  
import org.springframework.boot.autoconfigure.SpringBootApplication;  
import org.springframework.context.annotation.ComponentScan;  
  
/\*\*  
 \* Spring boot 入口启动程序,sprint boot内置了tomcat \* @author Administrator  
 \*/  
@ComponentScan(basePackages\= {"com.spring.inter.controller"})//扫描组件  
@SpringBootApplication  
public class Application {  
    public static void main(String\[\] args) {  
        SpringApplication.run(Application.class,args);  
  }  
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题