Nacos註冊中心之搭建工程
阿新 • • 發佈:2021-10-13
建立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.3View Code.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>
建立子模組
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:SSSView 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: trueView 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