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代码库)