添加网关模块
右击项目–new–添加module,创建普通的manen项目
网关是cloud项目中所有模块的入口,所以它的配置和普通的配置略有不同。
一、添加依赖:
<dependencies> <dependency> <!-- gateway 注意 此模块不能引入starter-web --> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> </dependencies>
pring-cloud-starter-alibaba-nacos-discovery是Spring Cloud Alibaba中关于Nacos服务发现的起步依赖。引入它可以让Spring Cloud应用使用Nacos作为服务注册与发现中心。
配置网关的application.yml文件
server: # 该模块的端口号 port: 8080 spring: application: # 网关名称 name: gateway profiles: #指定环境 active: local cloud: gateway: discovery: locator: enabled: true # 让gateway从nacos中获取服务信息 rotes: - id: user_route #用户模块路由 uri: lb://test #test项目注册到nacos的服务名称, order: 1 predicates: - Path=/test/** #路由断言,用于判断请求是否符合转发条件。这里是判断请求路径是否以/test开头,如果是则转发到test服务 nacos: discovery: server-addr: nacos地址+端口号 #nacos地址 namespace: FilterTest
网关入口
@SpringBootApplication @EnableDiscoveryClient //服务注册是否可以被发现 public class GateWayApplication { public static void main(String[] args) { SpringApplication.run(GateWayApplication.class,args); } }
普通模块
普通模块创建和网关模块创建是一样的。
普通模块的配置文件:
server: port: 8082 servlet: context-path: /test spring: application: name: test profiles: active: local cloud: nacos: discovery: server-addr: nacos地址+端口号 #nacos地址 namespace: FilterTest
普通模块的pom文件
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> </dependencies>
启动类:
@SpringBootApplication @EnableDiscoveryClient public class TestApplication { public static void main(String[] args) throws UnknownHostException { ConfigurableApplicationContext application =SpringApplication.run(TestApplication.class,args); }
application.yml文件和bootstrap.yml文件的区别
该例子我搭建的cloud项目使用的配置文件使用的是application.yml,这里有一个优先级的问题,bootstrap.yml的优先级要比application.yml的优先级要高,而且一般使用熔断、限流之类的中间件的时候一般使用bootstrap.yml。
总结
本博客文中只是简单的搭建了一个cloud项目,如果在实际开发过程中需要用到其他的组件,在pom文件中引入相关依赖。
最后搭建完毕之后访问此:http://localhost:8080/test/test/TestController/test地址可以访问到自己的项目。需要说明一下,url地址中的第一个“/test”是网关中配置的地址,第二个test是自己模块中的上下文地址。