总想对微服务架构做一个小小的总结,不知如何下手,最近觉得还是从搭建微服务的过程来入手,对于springboot的maven项目从构建多模块架构进而衍化为常用的微服务架构来做个记录吧。
首先,创建多个springboot项目,项目结构如图:
裁剪后如右侧
创建完成后,先解释一下:sharp-pom是父类工程,其他所有工程都要继承该工程,sharp-pom主要用来管理版本和声明一些jar的引用,本博主没有做聚合工程,这里说明一下聚合和继承的关系:继承是父POM为了抽取统一的配置信息和依赖版本控制,方便子POM直接引用,简化子POM的配置。聚合(多模块)则是为了方便一组项目进行统一的操作而作为一个大的整体,所以要真正根据这两者不同的作用来使用,不必为了聚合而继承同一个父POM,也不比为了继承父POM而设计成多模块。
接下来对各个模块进行处理
sharp-pom 只需要保留pom.xml文件即可,注意打包方式一定选择pom,具体内容如下:1 24 4.0.0 5 6com.sharp 7sharp-pom 80.0.1-SNAPSHOT 9pom 10 11sharp-pom 12Demo project for Spring Boot 13 1415 20 21org.springframework.boot 16spring-boot-starter-parent 172.1.0.RELEASE 1819 22 32 35 36UTF-8 23UTF-8 240.0.1-SNAPSHOT 251.8 268.0.12 271.3.2 285.1.1.RELEASE 291.1.10 30true 3137 6138 59 6039 43com.alibaba 40druid 41${druid.version} 4244 48org.springframework 45spring-jdbc 46${jdbc.version} 4749 53mysql 50mysql-connector-java 51${mysql.version} 5254 58org.mybatis.spring.boot 55mybatis-spring-boot-starter 56${mybatis.spring.version} 5762 7163 66my-release 64http://192.168.135.128:8081/repository/maven-releases/ 6567 70my-snapshots 68http://192.168.135.128:8081/repository/maven-snapshots/ 69
接下来的common、entity、mapper三个项目主要作为后面的依赖包均不需要启动类和测试类,都可以直接干掉,其中mapper有配置文件故而也要保留src/main/resources目录,其他两项只需要保留src/main/java即可,这些项目打包后是一个很普通的jar包,所以pom中不需要引入maven的打包插件,如果引入的话启动会报错。。。java:[1,17] 找不到符号、程序包。。。不存在之类的,因为只是一个普通包,我们直接把它干掉就行
<build>
<plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.6</version> <configuration> <skipTests>true</skipTests> </configuration> </plugin> </plugins> </build>然后层层依赖,没有什么特别的,需要注意的是,非微服务的多模块,controller层直接依赖service层,所以service层不需要启动,service层也可以直接搞成如common、entity一样的结构,只是一个普通的依赖包即可,如果是作为微服务的一个服务,那么它要想注册中心注册,就需要在该项目进行相关数据库、mybatis及dubbo、zookeeper等的配置,现在这一步我们只是作为一个普通jar包依赖,故而相关数据库等的配置都在访问层进行即在sharp-user项目中进行配置。
common项目pom,除了pom暂时无其他内容
1 24 4.0.0 5 67 11com.sharp 8sharp-pom 90.0.1-SNAPSHOT 10sharp-common 12jar 13 14sharp-common 15公共模块 16 17 1819 30 4620 23 24org.springframework.boot 21spring-boot-starter 2225 29org.springframework.boot 26spring-boot-starter-test 27test 28
entity pom
4.0.0 com.sharp sharp-pom 0.0.1-SNAPSHOT sharp-entity jar sharp-entity Demo project for Spring Boot org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-test test com.sharp sharp-common ${project.parent.version}
mapper项目无特别之处
pom
1 24 4.0.0 56 10com.sharp 7sharp-pom 80.0.1-SNAPSHOT 9sharp-mapper 11jar 12 13sharp-mapper 14Demo project for Spring Boot 15 1617 41 42 59 6018 22com.sharp 19sharp-common 20${project.parent.version} 2123 27com.sharp 24sharp-entity 25${project.parent.version} 2628 31org.springframework.boot 29spring-boot-starter 3032 35org.mybatis.spring.boot 33mybatis-spring-boot-starter 3436 40org.springframework.boot 37spring-boot-starter-test 38test 39
service-api pom
1 24 4.0.0 5 6sharp-service-api 7jar 8 9sharp-service-api 10Demo project for Spring Boot 11 1213 17 18com.sharp 14sharp-pom 150.0.1-SNAPSHOT 1619 23 24UTF-8 20UTF-8 211.8 2225 40 41 4226 29org.springframework.boot 27spring-boot-starter 2830 34com.sharp 31sharp-entity 32${project.parent.version} 3335 39org.springframework.boot 36spring-boot-starter-test 37test 38
service pom
1 24 4.0.0 56 10com.sharp 7sharp-pom 80.0.1-SNAPSHOT 9sharp-service 11jar 12 13sharp-sevice 14Demo project for Spring Boot 1516 28 75 76 84 85 8629 32org.springframework.boot 30spring-boot-starter-web 3133 36com.alibaba 34druid 3537 40org.springframework 38spring-jdbc 3941 45com.sharp 42sharp-entity 43${project.parent.version} 4446 50com.sharp 47sharp-common 48${project.parent.version} 4951 55com.sharp 52sharp-mapper 53${project.parent.version} 5456 60com.sharp 57sharp-service-api 58${project.parent.version} 5961 64org.mybatis.spring.boot 62mybatis-spring-boot-starter 6365 68 69mysql 66mysql-connector-java 6770 74org.springframework.boot 71spring-boot-starter-test 72test 73
web user pom
1 24 4.0.0 5 6sharp-user 7jar 8 9sharp-user 10Demo project for Spring Boot 11 1213 17 18com.sharp 14sharp-pom 150.0.1-SNAPSHOT 1619 23 24UTF-8 20UTF-8 211.8 2225 65 6626 29com.alibaba 27druid 2830 33org.springframework.boot 31spring-boot-starter-web 3234 38com.sharp 35sharp-entity 360.0.1-SNAPSHOT 3739 43com.sharp 40sharp-common 410.0.1-SNAPSHOT 4244 48 49com.sharp 45sharp-service-api 460.0.1-SNAPSHOT 4750 54com.sharp 51sharp-service 520.0.1-SNAPSHOT 5355 59com.sharp 56sharp-mapper 570.0.1-SNAPSHOT 5860 64org.springframework.boot 61spring-boot-starter-test 62test 6367 74 75 7668 7369 72org.springframework.boot 70spring-boot-maven-plugin 71
application.properties
1 spring.profiles.active=local 2 3 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource 4 spring.datasource.driver-class-name=com.mysql.jdbc.Driver 5 spring.datasource.url=jdbc:mysql://192.168.xxx.xxx:3306/sharp 6 spring.datasource.username=root 7 spring.datasource.password=******** 8 9 #mybatis配置10 #指定全局配置文件位置11 mybatis.config-location=classpath:mybatis/mybatis-config.xml12 #指定别名包13 mybatis.type-aliases-package=com.sharp.forward.entity14 #指定xml文件位置15 mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
注意启动项上一定要加注解@MapperScan("com.sharp.forward.mapper"),其他都是常规的东西,结构如下:
测试OK!