背景:今天新创建了一个springboot项目,之后怎么都访问不了 一直报404
错误现象及描述:
代码展示:
测试一:起初直接在启动类里边写了测试方法进行测试
@SpringBootApplication
public class TestSpringBootApplication {
@RequestMapping("/")
public String index(){
return "hello";
}
public static void main(String[] args) {
SpringApplication.run(TestSpringBootApplication.class, args);
}
}
结果访问http://localhost:8080/ 报404
测试一解决方案:在入口类上边加上@RestController注解即可
@SpringBootApplication
@RestController
public class TestSpringBootApplication {
@RequestMapping("/")
public String index(){
return "hello";
}
public static void main(String[] args) {
SpringApplication.run(TestSpringBootApplication.class, args);
}
}
测试二:将测试方法写入另外的包和类中,如下所示,新建包和类
@RestController
public class sss {
@RequestMapping("/sss")
public String index(){
return "hello";
}
}
包结构如图所示:
访问:http://localhost:8080/sss 报404
测试二解决方法:修改入口类的注解为
@SpringBootApplication(scanBasePackages="com.example")
public class TestSpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(TestSpringBootApplication.class, args);
}
}
特别注意:因为包扫描需要自定义,否则扫描到的好像只是入口类所在的包,或者入口类所在包的下一级,比如,入口类的包名字是com.example.demo,那么com.example.demo.XXX.xxx都可以被扫描到,但是com.example.xxx就不可以被扫描到。
测试三:因为@SpringBootApplication注解是一个组合注解,底层是有多个注解组成的,其中我们也可以把@SpringBootApplication换成另外三个注解也可以完成项目启动。
//包扫描
@ComponentScan("com.example")
//组件扫描
@Configuration
//配置控制
@EnableAutoConfiguration
public class TestSpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(TestSpringBootApplication.class, args);
}
}
其中注意的是:包扫描,也是需要自定义的,否则也是只扫描到入口类所在的包以及入口类所在包的下一级。
总之,配置包扫描是必不可少的。