您好,我正在学习Spring,但我不明白为什么会收到白标错误
MAINCLASS:
package com.hello.springhelloworld;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringHelloWorldApplication {
public static void main(String[] args) {
SpringApplication.run(SpringHelloWorldApplication.class, args);
}
}
HELLOWORLDCLASS:
package web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class HelloWorldController {
@RequestMapping("/hello")
public String sayHello(@RequestParam(value = "name") String name){
return "Hello" + name + "!";
}
}
答案 0 :(得分:1)
Spring boot的组件扫描未扫描您的控制器类。
您的控制器类应与SpringHelloWorldApplication类位于同一包中(或在子包中)。
因此您的控制器软件包声明应为:
package com.hello.springhelloworld.web;
或
package com.hello.springhelloworld;
Spring boot的默认组件扫描将扫描主应用程序类包的同一包或子包中的组件。
答案 1 :(得分:1)
问题是组件扫描不知道您的Web软件包。
另一种方法是,您可以在主班获得@ComponentScan("web")
的帮助。
下面是加法(通读您的代码,并认为要写出来)。
致电/hello?name=World
后,如果可以预料,它将显示“ Hello World!”。不,它不会显示,除非您有视图将其命名为“ Hello World!”。尝试使用@Controller
而不是@RestController
。您的消息将被打印。
谢谢!