SpringCloud(一)手把手入门

扯皮

	可能是生在一个好年代的原因所以不清楚这些的来之不易,就像吃米饭长大的我们不知道爷爷那个吃树皮的年代
	只知道用起来就一个字 真香	
	记得webService吗?当需要调用另一个服务的时候需要使用一堆命令生成一堆类然后把这堆类放到你的代码中
	你才能调用。为什么要说'才'?明明听上去很简单的样子为啥不说'就'??
	这只是一个让SpringCloud项目跑起来的文档,所以我就不过多装逼了(俺也暂时只到这个地步)

关于各个工程的介绍和建议

1、parent 介绍: 父工程主要负责版本控制,cloud是多个工程组成的项目,而每个工程都得导入一些必要的依赖,
	           而每个工程的依赖需要保持一致,可以使用父工程来控制版本
		       因为父工程仅仅只做版本控制,所以打包时只需要将其打包为pom文件即可
		  角色:无
		  打包方式:pom
2、eureka 介绍:俗称注册中心,可以想象成一个本子上面记录的是某服务的提供者有什么功能。
		 	   比如服务的提供者A去注册了一下说我会算1+1,然后注册中心的本子上就记录了A能提供计算1+1的功能
		 	   然后服务的调用者B就能去调用A提供的1+1的方法
		  角色:无
		  打包方式:jar
3、common 介绍:公共工程,用于放入实体类,工具类的工程,只需要一个java目录不需要resources目录
			   其他工程需要引入这个工程
		  角色:无
		  打包方式:jar
4、ucenter*n 介绍:就是userCenter就是用户中心,随便叫啥都行,作为一个服务的提供者
				 为什么乘n,因为服务的提供者可以有n个
 		     角色:生产者
		     打包方式:jar
5、webbase*n 介绍:名字也是随便起的,反正就是一个服务的调用者,服务的调用者也可以是n个所以乘n
		     角色:消费者
			 打包方式:jar

demo.Github

SpringCloud搭建详情

这次是和以前一样使用maven骨架创建web工程一样的,使用Spring Initializr创建总是连接异常
区别:骨架需要手动创建java、resources 并且手动Mark Directtory as和手动创建配置文件
	 而Spring Initializr创建全自动就有了
重点:主要是pom文件依赖导入完整,那种方式创建都无所谓
!!:同级是为了好看

1创建父工程

new Project

SpringCloud(一)手把手入门_第1张图片
SpringCloud(一)手把手入门_第2张图片
SpringCloud(一)手把手入门_第3张图片
SpringCloud(一)手把手入门_第4张图片
SpringCloud(一)手把手入门_第5张图片
SpringCloud(一)手把手入门_第6张图片

完整的pom

	


    4.0.0
    
    com.zongyi
    demo-parent
    1.0-SNAPSHOT
    pom

    
    
        UTF-8
        UTF-8
        1.8
        Finchley.RC2
        2.0.2.RELEASE
    

    
    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                
                ${spring-cloud.version}
                pom
                import
            

            
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot.version}
                pom
                import
            
        
    

    
    
    
        
            spring-milestones
            Spring Milestones
            https://repo.spring.io/milestone
            
                false
            
        
    
	

2创建注册中心

new Module(new Project也行只是路径问题,new Module方便些)

SpringCloud(一)手把手入门_第7张图片
SpringCloud(一)手把手入门_第8张图片
!!!下面的步骤和上面的一样的 但是选路径的时候要注意

SpringCloud(一)手把手入门_第9张图片

删除src下的main下的webapp文件 因为不需要

然后新建1.main/java 2.main/resources test不需要(建不建无所谓)

建好以后 Mark Directtory as -->

SpringCloud(一)手把手入门_第10张图片

然后在java下新建一个包 通常为groupId 在包下放启动类,

注意:启动类不能直接放在src下面

SpringCloud(一)手把手入门_第11张图片SpringCloud(一)手把手入门_第12张图片

接下来添加依赖和添加配置文件

SpringCloud(一)手把手入门_第13张图片
SpringCloud(一)手把手入门_第14张图片

最后是启动类的main方法

SpringCloud(一)手把手入门_第15张图片

完整的demo-eureka.pom




    4.0.0
    
        demo-parent
        com.zongyi
        1.0-SNAPSHOT
        ../demo-parent/pom.xml
    

    demo-eureka
    jar

    
        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-server
        
    


完整的配置文件

spring:
  application:
    name: demo-eureka    #工程名(在注册中心的页面看到的名字)
server:
  port: 9990  #端口号

eureka:
  client:
    register-with-eureka: false  #是否注册(eureka本身就是注册中心所以自己就不注册了)
    fetch-registry: false   #是否获取注册信息
    service-url:
      defaultZone: http://localhost:9990/eureka/  #其他项目注册时使用这个
  instance:
    prefer-ip-address: true
  server:
    enable-self-preservation: false #(默认true;此处设为false,关闭自我保护机制,主动剔除故障的节点)
    eviction-interval-timer-in-ms: 5000

注册中心就搞定了运行启动类,然后http://127.0.0.1:9990/ 出现下面页面就是了

SpringCloud(一)手把手入门_第16张图片

3创建一个生产者(服务的提供者)

这个工程用Spring Initializr创建
注意:!结构都一样,只是有些东西自动生成了

SpringCloud(一)手把手入门_第17张图片
SpringCloud(一)手把手入门_第18张图片
SpringCloud(一)手把手入门_第19张图片

还是要注意路径问题 ,他们是同级的

SpringCloud(一)手把手入门_第20张图片

SpringCloud(一)手把手入门_第21张图片

自动生成的pom中父工程是SpringBoot要改成自己的parent

还有就是自动导的依赖删掉

完整的demo-ucenter.pom



    4.0.0
    
        demo-parent
        com.zongyi
        1.0-SNAPSHOT
        ../demo-parent/pom.xml
    

    com.zongyi
    demo-ucenter
    0.0.1-SNAPSHOT
    demo-ucenter
    Demo project for Spring Boot
    
        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-server
        
        
        
            org.springframework.cloud
            spring-cloud-starter-openfeign
        
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

完整的配置文件yml(整个复制上一个工程的就行,需要改端口号和是否注册)

spring:
  application:
    name: demo-ucenter    #工程名(在注册中心的页面看到的名字)
server:
  port: 9991  #端口号

eureka:
  client:
    register-with-eureka: true  #是否注册(服务的提供者是需要注册到注册中心的) 默认就是true
    fetch-registry: true   #是否获取注册信息
    service-url:
      defaultZone: http://localhost:9990/eureka/  #这里和注册中心的一样就能注册到注册中心
  instance:
    prefer-ip-address: true

运行启动类,然后http://127.0.0.1:9990/ 出现下面页面就是了

SpringCloud(一)手把手入门_第22张图片

4创建一个消费者(服务的调用者)

创建步骤和上面的一样可以使用maven骨架或者Spring Initializr都可以
最后改pom文件就行 改pom 改pom 改pom
我的Spring Initializr不好使 我用maven骨架

SpringCloud(一)手把手入门_第23张图片

初步工程结构

SpringCloud(一)手把手入门_第24张图片
依赖和配置文件复制上一个工程的就行,需要改端口号和工程名

运行启动类,然后http://127.0.0.1:9990/ 出现下面页面就是了

SpringCloud(一)手把手入门_第25张图片

webbase创建好 简单的测试一下 webbase调用ucenter

1、在ucenter(生产者|服务的提供者)工程中创建controller和Springboot的controller一样

SpringCloud(一)手把手入门_第26张图片

2、在webbase(消费者|服务的调用者)工程中创建接口(没有实现|不需要实现) 我管它叫service

SpringCloud(一)手把手入门_第27张图片

SpringCloud(一)手把手入门_第28张图片

3、在webbase工程中写一个controller并注入那个接口,

SpringCloud(一)手把手入门_第29张图片

4、重启工程测试(修改了哪个重启哪个,注册中心一直启动着别关也不需要重启)

http://127.0.0.1:9992/webTestController/test?name=zongyi

SpringCloud(一)手把手入门_第30张图片

至此SpringCloud已经测通
但是
工程与工程之间只传递简单的字符串肯定不满足需求的啊
但是呢他们又只能传递字符串
那咋办 JSON啊,这些SpringCloud其实都自动解决了
那问题是两个工程之间传递的JSON最后都得转换为一个对象啊,
A工程有的类B工程可能没有啊,如果有那就是A和B工程有了两个一毛一样的类?代码都是复制的?
所以common就出现了啊

下一篇实践+熟练

你可能感兴趣的:(SpringCloud)