SpringCloud学习笔记(十一)微服务项目结构搭建

专辑目录:SpringCloud学习日志

(之后我贴代码比较少,更多是截图说明,因为会上传源码包)

先前搭建的项目都是一个服务一个项目,因为还没有涉及到实体类所以好像没什么问题。

但是一旦涉及到实体类,分开存放意味着要拷贝多份实体类这显然不利于开发和维护。

所以这回我们来搭建一个比较完善的项目结构。

SpringCloud学习笔记(十一)微服务项目结构搭建_第1张图片

如图结构,首先新建一个Maven项目,取名为parents,package 设为pom,用来作为根项目。

然后在parents下新建一个Module,取名为api-service,package设为pom,用来存放接口项目。

然后在api-service下新建两个Module,取名为api-member-service和api-order-service,package设为jar,用来存放会员接口类和订单接口类。

然后在parents下新建两个Module,取名为api-service-member-impl和api-service-order-impl,package设为jar,用来存放会员实现类代码和订单接口类代码。

package的设定总结起来就是末端jar,其他都是pom。根据需要来建Module,我这里只是举例member和order。

最后把上篇的springcloud2-eureka-server复制一份用import Module的方式导进来(不导进来放在新的窗口运行也行)。

项目都是新建的,parents的pom.xml如下设置:



    4.0.0

    com.study
    parents
    1.0-SNAPSHOT
    
        api-service
        api-service-member-impl
        api-service-order-impl
    
    pom

    
        org.springframework.boot
        spring-boot-starter-parent
        2.0.1.RELEASE
         
    

    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                Finchley.M7
                pom
                import
            
        
    

    
        
        
            org.springframework.boot
            spring-boot-starter-web
        

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

        
        
            org.springframework.cloud
            spring-cloud-starter-openfeign
        


        
            org.projectlombok
            lombok
        
    

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

    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

其实也是从其他原来的工程里拷贝过来,加了Lombok而已。如果没有安装Lombok的还要自己百度一下如何安装了。或者你不用Lombok,它只是自动帮你写了get、set、toString而已,从下图可以看到,我只是加了个@Data,它隐藏式的帮我实现了几个常用的方法,如果不用Lombok就自己右键生成。

SpringCloud学习笔记(十一)微服务项目结构搭建_第2张图片

parents 就不用动了。接下来我们在member-service 定义一个接口,在member-impl 实现它,如何通过Controller访问。

上图实体类User已经展示了,非常简单,只加了名字和年龄。下面贴一下接口的代码图片。

SpringCloud学习笔记(十一)微服务项目结构搭建_第3张图片

一般来说接口是不需要@RequestMapping的,但是为了方便后面使用Feign,在这里先加上。注意看左边项目结构,不要建错位置。

SpringCloud学习笔记(十一)微服务项目结构搭建_第4张图片

然后如上图在member-impl建一个impl实现类,其实这里和普通的springboot开发没什么区别,就是controller而已。这里我们只是测试一下能不能用controller的方式直接访问。当然这里会报错,因为不是同一个工程,member-impl访问不到service-member的类,这时我们需要在member-impl加入service-member的依赖。

SpringCloud学习笔记(十一)微服务项目结构搭建_第5张图片

写一个启动类AppMember,这里还用不到@EnableFeignClients,但是后面要用到所以先加上也没关系。

SpringCloud学习笔记(十一)微服务项目结构搭建_第6张图片

然后yaml配置应该不用多说了。

SpringCloud学习笔记(十一)微服务项目结构搭建_第7张图片

先启动AppEureka,然后再启动AppMember。浏览器验证。

SpringCloud学习笔记(十一)微服务项目结构搭建_第8张图片

好,测试通过!至于为什么浏览器把它当做xml好像也不重要。

接下来我们用引入Feign了。仍然是order调用Member。

order一样需要先有接口

SpringCloud学习笔记(十一)微服务项目结构搭建_第9张图片然后也要和member-impl一样,先在pom.xml加上order-service的依赖。

接着在我们要和上篇那样使用feign来进行RPC调用的话。首先要有Feign接口。

SpringCloud学习笔记(十一)微服务项目结构搭建_第10张图片然而这是在order-impl项目中,要继承member-service的接口,还得引入member-service的依赖

SpringCloud学习笔记(十一)微服务项目结构搭建_第11张图片

因为在MemberService中已经定义了getMemberByName方法,而且还加了RequestMapping注解,所以里继承之后就不需要写了,节省了代码。

然后就和上篇差不多了。

SpringCloud学习笔记(十一)微服务项目结构搭建_第12张图片

通过autowired自动注入feign,然后调用。启动类和yaml也不用我贴出来了吧。按顺序依次启动。

我们在浏览器测试一下

SpringCloud学习笔记(十一)微服务项目结构搭建_第13张图片

可以看到,成功的从order调用了member的方法。但是name和上篇一样拿不到。

这是因为springmvc的缘故,我们在member的接口和实现类上加上@RequestParam就可以了

SpringCloud学习笔记(十一)微服务项目结构搭建_第14张图片

SpringCloud学习笔记(十一)微服务项目结构搭建_第15张图片

记住,接口和实现类都要加,而且必须填value ,不然会报错或者无效。

你可能感兴趣的:(SpringCloud学习日志)