技术标签: spring boot spring cloud Spring Boot eruka
最近因为之前了解了dubbo,spring cloud的源代码(粗颗粒的了解,嘻嘻~),今天没事,搜搜网上(垃圾)教程,想学着搭建个spring cloud。没料到又开启了自闭的一天(有新手在公司做项目的感觉了,又有那味了),还好我是公费自习。
看的搭建教程是如下(但是他好像也不是原创):
使用IDEA搭建springcloud微服务(一)----父工程的搭建
使用IDEA搭建springcloud微服务(二)-----Eureka服务注册中心(BASE认证)
使用IDEA搭建springcloud微服务(三)----微服务服务方cloud-provider
使用IDEA搭建springcloud微服务(四)----微服务消费方cloud-client
使用IDEA搭建springcloud微服务(五)----微服务运行展示
他的版本和我的电脑不同,存在的几个问题:
1. 我目前用的IDEA版本2017.2.6搭建项目时:
①选项略有些不同,比如feign,我这儿只有选openfeign
②spring boot没他那低版本而就用了默认选的2.2.1
③我搭建出来生成的pom里springcloud版本是<spring-cloud.version>Hoxton.RC1</spring-cloud.version>,并且我这pom里还有<repositories>,和他的教程不符,不改成他那样也没事,无伤大雅。
④学到了接口&内部类且该类又要实现某方法,看起来很诡异的文件。(UserFeignClient.java)
IDEA创建出module后,红框内这些文件可以删掉,看着更清爽。
一上午,按照他的步骤搭建完之后(夸一波他的教程,的确相当详细,一步一步,在垃圾遍地的教程中,可以看出费了不少心血。对没有玩过分pom的同学是一个很好的示范),但是启动不了,自闭了。
一、
Eureka服务注册中心(BASE认证) cloud-discovery
启动不了,报错
java.lang.IllegalStateException: Failed to introspect annotated methods on class
解决办法:
https://blog.csdn.net/qq_32198005/article/details/78435648
In maven, I changed the scope like this: <scope>provided</scope> to <scope>compile</scope> and it worked!!.
然后,又报错
Failed to instantiate [javax.servlet.Filter]: Factory method 'springSecurityFilterChain' threw exception; nested exception is java.lang.IllegalStateException: Can't configure anyRequest after itself
看不懂,但是又是什么Chain的又是什么Security的,我想是不是启动项里静态内部类WebSecurityConfigure错了,干脆注了
@EnableEurekaServer
@SpringBootApplication
public class CloudDiscoveryApplication {
public static void main(String[] args) {
SpringApplication.run(CloudDiscoveryApplication.class, args);
}
/*@EnableWebSecurity
static class WebSecurityConfigure extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
// 在/eureka/**端点忽略csrf验证
http.csrf().ignoringAntMatchers("/eureka/**");
// 配置使请求需要通过httpBasic或form验证
http.authorizeRequests().anyRequest()
.authenticated()
.and()
.formLogin()
.and()
.httpBasic();
super.configure(http);
}
}*
}
欸,能启动了,很神奇。不懂。有无懂哥说说看原理。
中途岔道:
因为想试试看什么地方变动可以跑起来,所以copy了一份程序到其他文件夹,用那份程序试验,没想到如此又搞了一些幺蛾子:
1.编码UTF-8(csdn只能手动复制,别点代码右上角“复制”功能,会中文乱码的)、jar包的神奇问题
2.莫名其妙说pom没slf4j
3.client里的注解@EnableFeignClients,@EnableDiscoveryClient死活导不到jar包
于是,又换回在原程序文件上操作了,不过也仍出现一个莫名其妙的坑(在下文cloud-client里再写)。
一些其他乱七八糟的改动,但是发现不必要:
<parent>
<!--<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
<relativePath/> <!– lookup parent from repository –>-->
<groupId>com.cloud</groupId>
<artifactId>spring-cloud</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<!--<spring-cloud.version>Hoxton.RC1</spring-cloud.version>-->
<spring-cloud.version>Finchley.SR2</spring-cloud.version>
</properties>
<dependencies>
<!-- tomcat支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>compile</scope>
</dependency>
<!-- 新增酸辣粉4j 也可直接在父类pom加而一了百了。(后来发现不需要,应该是这份copy工程是直接复制来的而打开项目导致的蛋疼) 抽风了,加了后当时正常,但在再次点开pom时发现pom头<project标签也仍仍仍仍仍冒红,maven bug了 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
</dependencies>
<!-- <repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
</repository>
</repositories>-->
二、
微服务服务方cloud-provider
注册中心启动了之后,我以为事儿就成了,抓紧想体验一下远程调用的舒适感,不料,一启动provider
com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
解决办法:
https://www.cnblogs.com/expiator/p/9696887.html
provider的配置中添加(而注册中心的配置中是有的(见篇首他的教程),不知provider这里为何还得再配一次)
eureka:
client:
registerWithEureka: false
fetchRegistry: false
至此,三座大山终于翻过了两座o(╥﹏╥)o,provider也“顺利”启动了
三、
微服务消费方cloud-client
上文说到,换回在原程序文件上操作了,不过也仍出现一个莫名其妙的坑:
client启动时它就自闭了——
2019-11-08 17:51:52.368 INFO 56440 --- [ main] o.s.c.n.e.s.EurekaServiceRegistryRegistering application CLOUD-CLIENT with eureka with status UP
Unregistering application CLOUD-CLIENT with eureka with status DOWN
解决办法:
百度到的说法都是说缺spring-boot-starter-web,但我明明有啊,莫名其妙的,于是我重复放个依赖,
<dependencies>
<!--web依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--我再放一次-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
特么的就好了(但只是能启动而已,当时18岁的我不知道后面还有一个天坑在等着我o(╥﹏╥)o)
但是,新问题是,访问网址localhost:8082/user/1,错误,显示springboot的错误页面,F12看请求报500,http://localhost:8080/ 里看 Instances currently registered with Eureka 里 No instances available(不过后来跑通了后这里也啥都没,和教程的显示不同。是网页后台抽风了吗???)
控制台报错:com.netflix.client.ClientException: Load balancer does not have available server for client: cloud-provider
又开始自闭百度,看了很多垃圾,最后终于看到了一篇懂哥:
https://blog.csdn.net/IManiy/article/details/86505652
可以从注释的密集程度看到debug的辛酸坎坷:
client的application.yml
#ribbon:
# okhttp:
# enabled: true
#restclient:
# enabled: true
#eureka:
# enabled: true
#hystrix:
# command:
# default:
# execution:
# isolation:
# thread:
# timeoutInMilliseconds: 5000
ribbon:
eureka:
enabled: false
cloud-provider:
ribbon:
listOfServers: http://localhost:8081
provider的pom
#报错啦 Cannot execute request on any known server
#security:
# basic:
# enable: false #经测试,不顶用
#ribbon:
# okhttp:
# enabled: true
#restclient:
# enabled: true
折腾了一天,终于:
------------------------------谢邀,以上------------------------------------
人在美国,刚下飞机。
bug滚出我的魔仙堡。
这么好的天气的日子不用来debug真是太可惜了呢。
-----------附github代码下载地址
https://github.com/FA-CAI/springcloud
一、关系运算:1. 等值比较: = 语法:A=B 操作类型:所有基本类型 描述:如果表达式A与表达式B相等,则为TRUE;否则为FALSE 举例: Hive>select 1 from lxw_dual where 1=1; 12. 不等值比较: 语
Android布局中margin,padding,align的用法和区别 一、margin的用法 android : layout_marginxxx的用法是指当前组件距离其父组件在xxx方向上的边距 比如说:android:layout_marginleft = "30px" -..._android paddinghorizontal
问题原因:出现_\两个符号相连问题出现在我的文档的部分代码:_\hat{x}修改:_{\hat{x}}即可
【转】如何对matlab .m代码文件进行加密https://blog.csdn.net/jizhidexiaoming/article/details/86553841_matlab中p代码
二进制逆向题目解析给你个礼物你能收到吗 打开程序你会发现,它让你输入提取码: 你可以随便输入几个字符,会出现: 如果一直输入错无的话,它就会陷入一个循环: 所以,先用ida打开,用Shift+12调出字符串表,你会发现字符串表没有汉语,而程序出来的提示是汉语,所以我们无法在字符串表中找到我们想要的字符串,那么我们只能从在左侧的函数列表里查看main函数,直接进入主函数: ...
上海学校心理咨询考试时间:每年6月底7月初。小白心理将会在2021年的考试前,平均每天更新1个考前冲刺视频,欢迎各位关注。一、讲解视频 上海学校心理咨询-普通心理学-考前冲刺 3.4 注意的特征 二、部分题目1、在同一时间内,一个人能够清楚地感知到的物体的数量比别人的多,说明此人注意的( )。A 范围广B 稳定性好C 分配恰当D 转移快2、注意稳定的相反状态是( )。A_"期末复习300题56.单选题19.\"专心致志\"和\"一心二用\"分别对应注意的 a .集中性"
这需要强大可靠的蓝牙硬件和nRF52833器件,其扩展的温度范围和内存支持全部蓝牙mesh堆栈和应用软件,非常适合我们的智能照明和控制解决方案组合。nRF52833 SoC的大容量闪存和RAM内存可支持动态多协议功能,这在专业照明等应用领域是一项优势,当应用能并发支持低功耗蓝牙和蓝牙mesh/Thread/Zigbee功能,它们的配置、调试以及与照明mesh网络的互动都可以通过智能手机使用低功耗蓝牙来完成。这款SoC器件的105℃运作性能,在通常需要较高环境温度的专业照明应用领域具有更进一步的优势。..._nrf52833-qiaa
本文属于转载:原文链接。目录1、什么是可变对象2、HashMap如何存储键值对3、在HashMap中使用可变对象作为Key带来的问题4、如何解决1、什么是可变对象可变对象是指创建后自身状态能改变的对象。换句话说,可变对象是该对象在创建后它的哈希值可能被改变。在下面的代码中,对象MutableKey的键在创建时变量 i=10 j=20,哈希值是1291。然后我们改变实例的变量值,该对象的键 i 和 j 从10和20分别改变成30和40。现在Key的哈希值已经变成1931。_将对象放入hashmap的key,修改
手机客户端软件开发最大的困难就是平台不统一,手机开发平台太多。 手机可分为智能手机开发和feather phone手机。开发平台可分为开放式平台和封闭式平台,开放式平台包括symbian、windows mobile、linux、iPhone、Android、BlackBerry、j2me、brew等,支持手机应用程序通过OTA下载和安装;封闭式平台包括MTK、展讯、TI、飞利浦等。下
Redis与memcache的区别如下:1.数据结构:Memcache仅能支持简单的K-V形式,Redis支持的数据更多;2.多线程:Memcache支持多线程,Redis支持单线程,CPU利用Memcache利用率更高;3.持久化:Redis支持持久化,Memcache不支持持久化;4.分布式:Redis做主从结构,而Memcache服务器需要通过hash一致化来支撑主从结构;5.虚拟..._memcache redis区别
思路来源https://www.cnblogs.com/zwfymqz/p/8425731.html板子整理1.CRT中国剩余定理,利用逆元构造同余方程组的一个解,要求方程组模数之间互质,x==c[i](mod m[i])#include<bits/stdc++.h>using namespace std;typedef long long ll;ll ..._crt板子
1.JDO:(Java Data Object )是Java对象持久化的新的规范,也是一个用于存取某种数据仓库中的对象的标准化API.作用:用于存取某种数据仓库中的对象2.JPA:JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中.Sun引入新的J...