1. 程式人生 > 其它 >Nacos註冊中心之搭建工程

Nacos註冊中心之搭建工程

建立maven專案,父工程

File=>New => Project...

pom配置

使用SpringBoot,需要新增父級:SpringBoot:2.3.9.RELEASE

Nacos依賴管理

            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <
version>2.2.6.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency>

主要配置

    <parent>
        <artifactId>spring-boot-starter-parent</artifactId>
        <groupId>org.springframework.boot</groupId>
        <version>2.3
.9.RELEASE</version> </parent> <properties> <java.version>1.8</java.version> <mybatis.version>2.1.1</mybatis.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.2
.6.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${mybatis.version}</version> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> </dependencies>
View Code

建立子模組

pom配置

新增web、MySQL、mybatis和nacos依賴、maven外掛(打包成可直接執行的 JAR 檔案)

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    </dependencies>
    <build>
        <!--jar包名稱-->
        <finalName>user-service</finalName>
        <plugins>
            <!--打包成可以直接執行的 JAR 檔案(使用“java -jar”命令就可以直接執行)-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
View Code

編寫user-service

配置application.yaml(配置伺服器埠、資料庫連線、mybatis、logging、nacos服務端地址)

server:
  port: 8081
spring:
  datasource:
    url: jdbc:mysql://192.168.223.129:3306/cloud-user?useSSL=false
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
  application:
    name: userservice
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos 服務端地址
mybatis:
  type-aliases-package: com.marw.pojo
  configuration:
    map-underscore-to-camel-case: true
logging:
  level:
    com.marw: debug
  pattern:
    dateformat: MM-dd HH:mm:ss:SSS
View Code

啟動類

@SpringBootApplication
@MapperScan("com.marw.mapper")
public class UserServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserServiceApplication.class,args);
    }
}
View Code

pojo(Java Bean)

@Data
public class User {
    private Long id;
    private String username;
    private String address;
}
View Code

mapper(資料庫操作)

public interface UserMapper {
    @Select("select * from tb_user where id = #{id}")
    User findById(@Param("id") Long id);
}
View Code

service(業務邏輯)

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    public User queryById(Long id){
        return userMapper.findById(id);
    }
}
View Code

controller(暴露服務)

@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/{id}")
    public User queryByid(@PathVariable("id") Long id) {
        return userService.queryById(id);
    }
}
View Code

啟動服務:服務註冊成功

編寫order-service

配置application.yaml(配置伺服器埠、資料庫連線、mybatis、logging、nacos服務端地址)

server:
  port: 8082
spring:
  datasource:
    url: jdbc:mysql://192.168.223.129:3306/cloud-order?useSSL=false
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
  application:
    name: orderservice
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos 服務端地址
mybatis:
  type-aliases-package: com.marw.pojo
  configuration:
    map-underscore-to-camel-case: true
View Code

啟動類

@SpringBootApplication
@MapperScan("com.marw.mapper")
public class OrderServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderServiceApplication.class, args);
    }

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}
View Code

pojo

@Data
public class Order {
    private Long id;
    private Long price;
    private String name;
    private Integer num;
    private Long userId;
    private User user;
}

@Data
public class User {
    private Long id;
    private String username;
    private String address;
}
View Code

mapper

public interface OrderMapper {

    @Select("select * from tb_order where id = #{id}")
    Order findById(Long id);
}
View Code

service

@Service
public class OrderService {
    @Autowired
    private OrderMapper orderMapper;
    @Autowired
    private RestTemplate restTemplate;
    public Order queryById(Long id){
        Order order = orderMapper.findById(id);
        String url = "http://userservice/user/"+order.getUserId();
        User user = restTemplate.getForObject(url, User.class);
        order.setUser(user);
        return order;
    }
}
View Code

controller

@RestController
@RequestMapping("/order")
public class OrderController {

    @Autowired
    private OrderService orderService;

    @GetMapping("/{id}")
    public Order queryById(@PathVariable("id") Long id){
       return orderService.queryById(id);
    }
}
View Code

啟動服務:服務註冊成功