Spring Cloud(1)之 Spring Boot

1. Spring Cloud

Microservices、Spring Boot、Spring Eureka、Spring、Ribbon、Spring Hystrix、Spring Feign、Spring Zuul、Spring Config


2. 关于微服务

微服务的概念、微服务与单体应用的对比、微服务的应用场景、微服务的设计原则、微服务总体架构

微服务的概念: 将单体应用通过业务领域进行拆分,划分成多组小的服务,每个服务都可以以单个应用运行在进程内,服务间通过轻量级的通信协议进行通信;
Spring Cloud 和微服务: 微服务是一种架构风格,而 Spring Cloud是基于 Spring Boot的一整套实现微服务框架;
微服务与单体应用的对比: 1. 早期单体应用带来的问题是:项目僵化,开发难度大; 技术无法更迭; 部署速度慢; 无法按需伸缩; 2. 微服务的优势:易于开发和维护; 启动较快; 局部修改容易部署; 技术栈不受限; 按需伸缩;
微服务的应用场景: 取决于以下四个要素: 小:微服务体积小; 独:能够独立的部署和运行; 轻:使用轻量级的通信机制和架构; 松:微服务之间是松耦合的;
微服务的设计原则: 必须遵守以下原则:单一职责原则; 服务自制原则; 轻量通信原则; 接口明确原则;

 

3. 关于 Spring Boot

1. Spring Boot简介、2. Spring Boot项目搭建、3. Spring Boot集成、4. Spring Boot监控

1. Spring Boot简介:

概念: 快速搭建;理念:习惯由于配置;
核心功能: 独立运行Spring项目、内嵌 Servlet容器(如tomcat)、提供 starter简化 Maven配置、自动配置 Spring、准生产的应用监控、无代码生成和 XML配置

2. Spring Boot项目搭建、集成框架(Spring Boot和 MyBatis集成;)

eg:创建一个Spring Boot程序流程:
2.1 新建项目 — 添加控制器代码 — 添加主类 — 启动
New — Spring Initializr:name(spring_cloud), type:Maven Project, Packaging:Jar, Java Version:8, Language:Java, Group:com.asd, Artifact:spring-cloud, Version:0.0.1-SNAPSHOT, Descriptoon:第一个spring cloud项目, Package:com.asd — Web — Project name:spring-cloud, Project location:xx)
在这里插入图片描述
2.2 pom.xml 文件中添加依赖
pom中原有依赖:< parent>、spring-boot-starter-web、spring-boot-starter-test;
添加:mybatis和springboot依赖:mybatis-spring-boot-starter、mysql依赖:mysql-connector-java
(如果不添加配置文件中添加 Driver时会报错)

2.3 application.properties 属性文件中配置项目信息、数据源;mybatis的配置:别名包扫描、mapper映射文件;监控中开启详细信息的访问、开启端点;

#应用名
spring.application.name=customer-service
#版本
version=v1
#端口号
server.port=1111
#数据源的配置
#(class-name先导入Mysql依赖包不然会报错;url从Database-设置的URL中复制过来)
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/user
spring.datasource.username=root
spring.datasource.password=12345

#mybatis
#别名配置
mybatis.type-aliases-package=com.asd.entity
#mapper映射文件配置
mybatis.mapper-locations=classpath:mapper/*.xml

server.tomcat.uri-encoding=utf-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
spring.messages.encoding=UTF-8
#开启详细信息的访问
management.endpoint.health.show-details=always
#开启端点
management.endpoints.web.exposure.include=health,info refresh,env

2.4 main/java 包下新建 config、entity、dao(dao接口对应的 mapper映射文件-5)、service、controller 包
【4-1】entity 包中新建 Customer.java 类:类中 customerId 字段加 @JsonSerialize(using = ToStringSerializer.class) 注解、customerPassword字段加 @JsonIgnore 注解(@JsonIgnore注解可以在输出 json时忽略此字段,所以输出时没有密码字段)

@JsonSerialize(using = ToStringSerializer.class)
private Long customerId;

@JsonIgnore
private String customerPassword;

【4-2】dao 包中新建 CustomerDao.java 接口:编写接口方法;
【4-3】service 包中新建 CustomerService.java 接口、impl 包:包中新建 CustomerServiceImpl.java 类实现CustomerService.java 接口,并在类上加上@Service(value = "customerService")注解;类中注入 CustomerDao(customerDao的 bean是在运行主程序 SpringCloudApplication.java的类上添加 @MapperScan("com.asd.dao") 注解来扫描 dao包,生成 dao的 bean对象,customerDao的 mapper映射文件 CustomerMapper.xml 要在 application.properties 属性文件中进行 mybatis配置产生的),且调用 customerDao中的方法:

@Autowired
private CustomerDao customerDao;

【4-4】controller 包中新建 CustomerController.java 类,类上加@RestController注解;类中注入 customerService,且调用 customerService中的方法:

@Autowired
private CustomerService customerService;

【4-5】config 包 ;

2.5 resources 文件夹下新建 mapper 包,包中新建 CustomerMapper.xml 文件
CustomerMapper.xml 文件即为 CustomerDao.java 接口的 mapper映射文件:<mapper namespace="com.asd.dao.CustomerDao">;再在application.properties 属性文件中进行 mybatis的配置:别名包扫描、mapper映射文件的配置;

2.6 运行主程序 SpringCloudApplication.java 类上添加 @MapperScan("com.asd.dao")注解扫描 dao包,生成 dao的 bean对象;
 

3. Spring Boot集成框架(Spring Boot添加在线 API文档)

Spring Boot和 MyBatis集成;(上2)
Spring Boot添加在线 API文档(下):
3.1 pom.xml 文件中添加依赖
pom中原有依赖:< parent>、spring-boot-starter-web、spring-boot-starter-test;mybatis和springboot依赖:mybatis-spring-boot-starter、mysql依赖:mysql-connector-java(如果不添加配置文件中添加 Driver时会报错)
添加:swagger依赖:springfox-swagger2、springfox-swagger-ui;

3.2 在 config包中新建 CustomerDao.java 接口
config 包中新建 Swagger2.java 类:类上添加@Configuration注解,类中编写生成 Api的方法;

3.3 运行主程序 SpringCloudApplication.java类上添加 @EnableSwagger2注解;

3.4 controller 包中 CustomerController.java 类上@GetMapping(value = "/{customerId}")注解下添加注解:

@ApiOperation(value ="通过用户id查询用户",httpMethod = "GET",produces = MediaType.APPLICATION_JSON_VALUE)
@ApiImplicitParam(name = "customerId",value = "用户id",dataType = "Long",required = true,paramType = "path")

类中编写方法,方法上加 @PostMapping(value = "login")@GetMapping(value = "/{customerId}")替换之前的@RequestMapping注解;

3.5 entity 包中 Customer.java 类上添加@ApiModel(value = "customer",description = "用户") 注解;

3.6 运行:
URL: localhost:8088 / v2 / api-docs
在这里插入图片描述
URL: localhost:8088 / swagger-ui.html # !
在这里插入图片描述

4. Spring Boot应用监控(Spring Boot Actuator)

4.1 pom.xml 文件中添加依赖
pom中原有依赖:< parent>、spring-boot-starter-web、spring-boot-starter-test;mybatis和springboot依赖:mybatis-spring-boot-starter、mysql依赖:mysql-connector-java(如果不添加配置文件中添加 Driver时会报错)、swagger依赖:springfox-swagger2、springfox-swagger-ui,
添加:spring-boot-starter-actuator

4.21 运行:
URL: localhost:8088 / actuator
在这里插入图片描述
URL: localhost:8088 / actuator/ health
在这里插入图片描述

4.22 application.properties 属性文件中配置开启详细信息的访问、开启端点后,运行结果:
在这里插入图片描述
URL: localhost:8088 / actuator/ env
在这里插入图片描述

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值