Spring Framework 中的 Localhost 与 127.0.0.1

Posted

技术标签:

【中文标题】Spring Framework 中的 Localhost 与 127.0.0.1【英文标题】:Localhost vs 127.0.0.1 in Spring Framework 【发布时间】:2016-05-29 23:48:02 【问题描述】:

我正在尝试将 spring rest 服务连接到一个 android 设备的客户端。

我已按照本教程创建我的服务:https://spring.io/guides/gs/rest-service/ 默认情况下在端口 8080 上运行 Spring 服务。

我的问题是,在 localhost:8080/test 上,我的服务得到了正确的输出,但在 127.0.0.1:8080/test 上,我得到了 404 Not found。

这有什么原因吗?我特别需要连接到 127.0.0.1 以使用 android 模拟器进行调试。

谢谢。

【问题讨论】:

试试nslookup localhost。你应该得到127.0.0.1;如果你得到别的东西,就用那个。 我确实得到了 127.0.0.1,但这并不能真正解决我的问题。 假设您使用 Spring 的默认 Tomcat,请参阅 this answer。 我最终在 VM 选项中指定了 -Dserver-address=127.0.0.1 和 -Dserver-port=1320 ,这似乎有效。谢谢。 【参考方案1】:

这可能是因为 Java 7+ 使用 IPv6 作为默认值,而不是 IPv4。因此 localhost 解析为 :::1 而不是 127.0.0.1

尝试以下方法:

只需将 -Djava.net.preferIPv4Stack=true 传递给 java VM 选项。

如果可行,您可以通过在 Linux 上设置 _JAVA_OPTIONS 使其永久化:

export _JAVA_OPTIONS="-Djava.net.preferIPv4Stack=true"

您可以将上面的行放在 /etc/profile 或 /etc/profile.d/java.sh 中(通过创建文件 java.sh)

【讨论】:

谢谢,你救了我的命!

以上是关于Spring Framework 中的 Localhost 与 127.0.0.1的主要内容,如果未能解决你的问题,请参考以下文章

Spring Framework 中的 DAO、DTO 和 Service 层是啥?

Spring Framework 中的 Localhost 与 127.0.0.1

java Java中的缓存反射访问(来自Spring Framework代码库)

SSM所需的jar

如何使用 Spring Framework 中的 JdbcTemplate 类执行 INSERT 语句

Spring Framework 6中的新功能和增强功能