草庐IT

[初学Spring Boot](1):打不开localhost:8080/hello

一度雨 2023-04-04 原文

报如上错误;显示应用程序没有显式映射,也就是说,你的Controller(指示Spring某个类是否能够接收HTTP请求),没有映射到启动函数上。

解决办法:

 

在src/main/java/test/TestApplication.class中,为注解@SpringBootApplication加上参数,如图,是我创建Controller时的文件路径名称。而后,重启Spring Boot项目,Over。 

注:浏览器地址栏输入:localhost:8080/hello

不要前缀,http://localhost:8080/hello

另,8080端口可修改。 

延伸:

深层原因:

首先,我了解到,@SpringBootApplication会扫描当前包及其子包,如果报上述错误,意味着,我们的Controller既不在当前包下,也不属于子包。确实如此。

1、

可看到,我的controller是注解@SpringBootApplication所在包test 的邻居,所以不在当前包。

2、

我的 controller用的注解是@RestController。经查,@SpringBootApplication注解的子包包括@Controller,@Service,@Component,@Configuration和@Bean注解等。是故,我的controller注解也不是子包注解。

因而,@SpringBootApplication注解并不知道我的controller的存在。故而,我的controller类等于没写。

所以,需要给@SpringBootApplication指条路。

我们查看@SpringBootApplication源码,

@AliasFor(
annotation=ComponentScan.class,
attribute="basePackages"
)
String[] scanBasePackages() default{};

@AliasFor(
annotation=ComponentSacn.class,
sttribute="basepackageClasses"
)
Class<?>[] scanBasePackageClasses() default{};

根据命名,我们可以猜到,这就是两种指路方法,一种指到你家,扫描你家里所有人,另一种经过你家指到你这个人,即class类。显然,我们根据需要进行选择。两种的区别,显然的。

因而,我们选择两种方法的解决方式,为:

package com.wfy.test

//import com.wfy.controller.HelloController;
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootapplication

//@SpringBootApplication(scanBasePackages="com.wfy.controller")
@SpringBootApplication(sacnBasePackageClasses=com.wfy.controller.HelloController.class)
//@SpringBootApplication(scanBasePackageClassees=HelloController.class)
//@SpringBootApplication
public class TestApplication{
public static void main(String[] args){
Springapplication.run(TestApplication.class,args);
}
}

注意,指到你这个人的时候,你可以在参数里写完整的地址,也可以import一下你的地址,在参数里只写名加.class即可。具体看图。(没有双引号)

So,只要我在@SpringBootApplication所在包下创建我的MyController,就不需要指路。无论是用@Controller @ReponseBody,或者@RequstController,都可以扫描到。

 

 

 端口号不是8080啊。当然可以改了。

看路径,resources下,application.properties文件,加代码

 

OK,目前,我有两个在不同位置的controller,我想运行他俩,结果

 

想着多注解吧,报错。想想也知道重复了,还是想试一下。

搜了一下,原来路径可以多写。再细看源码,原来是一个字符数据啊。 

String[] scanBasePackages() default{};

 Over。多说无益。下次再聊。

有关[初学Spring Boot](1):打不开localhost:8080/hello的更多相关文章

  1. ruby - 易于初学者理解的 Ruby 库 - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭3年前。Improvethisquestion我正处于学习Ruby的阶段,我想查看一些小型库的源代码以了解它们是如何构建的。我不知道什么是小型图书馆,但希望SO能推荐一些易于理解的图书馆来学习。因此,如果有人知道一两个非常小的库,这是新手Rubyists学习的好例子,请推荐!我想使用Manveru'sInnatelib,因为它试图保持在2000LOC以下,但我还不熟悉其中经常使用的Ruby速记。也许大约100-5

  2. ruby-on-rails - Rails 4.2.0.beta2 - 无法连接到 LocalHost? - 2

    我按照RailsTutorial.org第三版(刚刚发布的版本)中的说明安装了Rails4.2.0.beta2。我没有使用cloudIDE,而是在带有RVM的Windows7主机上通过Vagrant使用UbuntuTrusty32。rails_4.2.0.beta2_newhello_app然后粘贴到hisgemfilesample中。在那之后,我跑了:$bundleinstall$railss服务器启动正常,但是当我尝试连接到localhost:3000时,出现“找不到服务器”更奇怪的是,我还有几个其他的Rails入门项目,我一直在使用Rails4.0.3和4.1.6,我能够很好地连

  3. ruby-on-rails - Faraday::ConnectionFailed,Connection refused - connect(2) for “localhost” port 9200 Error Ruby on Rails - 2

    我正在尝试使用RubyonRails在我的应用程序中添加Searchkickgem,但是当我在搜索框中键入一个词时,我的应用程序中出现此错误。我已经根据需要安装了elasticsearch和最新版本的java,但错误仍然是一样的。这是我得到的错误:Faraday::ConnectionFailedinPostsController#searchConnectionrefused-connect(2)for"localhost"port9200这是我的代码:终端显示已安装Elasticsearch:终端Warning:elasticsearch-1.7.3alreadyinstalled

  4. springboot定时任务 - 2

    如果您希望在Spring中启用定时任务功能,则需要在主类上添加 @EnableScheduling 注解。这样Spring才会扫描 @Scheduled 注解并执行定时任务。在大多数情况下,只需要在主类上添加 @EnableScheduling 注解即可,不需要在Service层或其他类中再次添加。以下是一个示例,演示如何在SpringBoot中启用定时任务功能:@SpringBootApplication@EnableSchedulingpublicclassApplication{publicstaticvoidmain(String[]args){SpringApplication.ru

  5. 基于SpringBoot的线上日志阅读器 - 2

    软件特点部署后能通过浏览器查看线上日志。支持Linux、Windows服务器。采用随机读取的方式,支持大文件的读取。支持实时打印新增的日志(类终端)。支持日志搜索。使用手册基本页面配置路径配置日志所在的目录,配置后按回车键生效,下拉框选择日志名称。选择日志后点击生效,即可加载日志。windows路径E:\java\project\log-view\logslinux路径/usr/local/XX历史模式历史模式下,不会读取新增的日志。针对历史文件可以分页读取,配置分页大小、跳转。历史模式下,支持根据关键词搜索。目前搜索引擎使用的是jdk自带类库,搜索速度相对较低,优点是比较简单。2G日志全文搜

  6. springboot使用validator进行参数校验 - 2

    1.依赖导入org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-validation2.validation常用注解@Null被注释的元素必须为null@NotNull被注释的元素不能为null,可以为空字符串@AssertTrue被注释的元素必须为true@AssertFalse被注释的元素必须为false@Min(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值@Max(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值@D

  7. 停车系统源码-基于springboot+uniapp开源项目 - 2

    Iparking停车收费管理系统-可商用介绍Iparking是一款基于springBoot的停车收费管理系统,支持封闭车场和路边车场,支持微信支付宝多种支付渠道,支持多种硬件,涵盖了停车场管理系统的所有基础功能。技术栈Springboot,MybatisPlus,Beetl,Mysql,Redis,RabbitMQ,UniApp功能云端功能序号模块功能描述1系统管理菜单管理配置系统菜单2系统管理组织管理管理组织机构3系统管理角色管理配置系统角色,包含数据权限和功能权限配置4系统管理用户管理管理后台用户5系统管理租户管理多租户管理6系统管理公众号配置租户公众号配置7系统管理操作日志审计日志8系统

  8. ruby - Ruby 的 "hello world"中的对象是什么? - 2

    如果在Ruby中一切都是对象,甚至数学运算符都是应用于对象的方法,当我写下:puts"Helloworld"方法是puts,参数是“Helloworld”,但是对象是什么? 最佳答案 放要查找方法,您可以调用:method(:puts)#=>#所以puts是定义在Kernel中的方法,对每个Object都可用。内核#putsputs"Helloworld"实际上是self.puts(String.new("Helloworld"))self是对象main.所以puts"helloworld"是:Kernel#puts方法调用在mai

  9. ruby - SSL_connect returned=1 errno=0 state=SSLv3 read server hello A: 版本号错误 (OpenSSL::SSL::SSLError) - 2

    当我运行https.ssl_version=:TLSv1_2我得到了错误ruby/2.1.0/net/http.rb:920:in`connect':SSL_connectreturned=1errno=0state=SSLv3readserverhelloA:wrongversionnumber(OpenSSL::SSL::SSLError)当我更改为https.ssl_version=:SSLv3ruby/2.1.0/net/http.rb:920:in`connect':SSL_connectSYSCALLreturned=5errno=0state=SSLv3readserve

  10. ruby - "k.send :hello"- 如果 k 是 "receiver",谁是发件人? - 2

    在下面的例子中,为什么我们说“k.send:hello”而不是“k.receive:hello”if,asstatedelsewhere,k实际上是接收者?听起来k是发送者而不是接收者。当我们说“k.send:hello”时,谁在发送,如果不是k?(你是不是和我一样一头雾水?)classKlassdefhello"Hello!"endendk=Klass.newk.send:hello#=>"Hello"k.hello#=>"Hello" 最佳答案 在Smalltalk中,一切都是对象。“发送者”是消息来源范围的所有者对象(即“th

随机推荐