springcloud项目nacos搭建和示例
记得先启动nacos,不会的可以看看其他博客是怎么安装和启动的,反正简简单单的事情
项目结构
consumer-user 项目
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Nacos 组件依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-openfeign-core</artifactId>
<version>3.1.3</version>
<scope>compile</scope>
</dependency>
bootstrap.yml
server:
port: 8866
spring:
application:
# 应用名称
name: consumer-user
profiles:
# 环境配置
active: dev
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
# 配置文件格式
file-extension: yaml
# 共享配置
shared-configs:
- ${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
User.java
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private String name;
private Integer age;
private String sex;
}
UserController.java
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/user")
public class UserController {
@Value("${server.port}")
private int port;
@GetMapping("getUser")
public User getUser(){
System.out.println(port);
return new User("张三",18,"男");
}
}
UserApplication 启动类
@SpringBootApplication
@EnableFeignClients
public class UserApplication {
public static void main(String[] args) {
SpringApplication.run(UserApplication.class, args);
}
}
启动项目在服务列表里可以看到以下结果
consumer-order 项目
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Nacos 组件依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
bootstrap.yml
server:
port: 8877
spring:
application:
# 应用名称
name: consumer-order
profiles:
# 环境配置
active: dev
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
# 配置文件格式
file-extension: yaml
# 共享配置
shared-configs:
- ${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
UsOrder r.java
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Order {
private String id;
private Integer total;
private String price;
private User user;
}
User.java
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private String name;
private Integer age;
private String sex;
}
OrderController.java
@RestController
@RequestMapping("order")
public class OrderController {
@Autowired
private TUserClient userClient;
@GetMapping("getOrder")
public Order getOrder(){
User user = userClient.getUser();
Order order = new Order("123852456",5,"36",user);
return order;
}
}
TUserClient.java
@FeignClient(name = "consumer-user") // consumer-user项目里面的bootstrap.yml应用名称
public interface TUserClient {
@GetMapping("user/getUser") // 这里调用consumer-user里面的 user/getUser 路径
User getUser();
}
启动类
扫描包 注意有改成自己的TUserClient 的包
@SpringBootApplication
@EnableFeignClients(basePackages = "com.xxx.order.client") //扫描包 注意有改成自己的TUserClient 的包
public class OrderApplication {
public static void main(String[] args) {
SpringApplication.run(OrderApplication.class, args);
}
}
启动项目在服务列表里可以看到以下结果
调用 http://127.0.0.1:8877/order/getOrder