• 《Spring Guides系列学习》guide21 - guide25


    要想全面快速学习Spring的内容,最好的方法肯定是先去Spring官网去查阅文档,在Spring官网中找到了适合新手了解的官网Guides,一共68篇,打算全部过一遍,能尽量全面的了解Spring框架的每个特性和功能。
    在这里插入图片描述
    接着上篇看过的guide20,接着往下看。

    guide21、Deploying to Cloud Foundry from STS

    Cloud Foundry 是一个 2011 年推出的开源平台服务(PaaS),初衷是方便开发人员构建最早的容器化应用。Cloud Foundry 关注开发人员体验,为开发人员构建、部署和运行无状态云原生应用提供了划时代的平台。

    STS:Spring Tool Suite,就是Spring官方基于Eclipse封装的一款开发工具, 主要是为了便于开发Spring应用程序。它与Eclipse相比较减少了很多原来的插件,主要是为了Spring程序服务的,当然开发其他的程序也是没有问题的。

    主要是讲了用STS的spring boot dashboard,把一个简单的web应用程序,部署到cloud Foundry的操作步骤。


    guide22、Creating CRUD UI with Vaadin

    讲的是在JPA 存储库的基础上构建 Vaadin UI。实现一个具有完整 CRUD(创建、读取、更新和删除)功能的应用程序和一个使用自定义存储库方法的过滤示例。

    Vaddin 是一个 Web 应用程序框架,用其开发的浏览器应用界面可以达到和桌面应用类似的效果,但和Flash,Silverlight 不同的是,Vaddin 应用无需再浏览器上安装任何插件。它是一个纯 Java 开发环境,开发人员无需深入了解 HTML,XML 或是 Javascipt。如果你曾经使用 Java 开发过 Swing,SWT 等应用,可以非常容易开始使用 Vaddin 开发 Web 应用。

    就是加一个前端显示,根据源代码实现了下,可以在localhost:8080中打开页面:
    在这里插入图片描述


    guide23、Centralized Configuration

    了解如何用cloud config去做一个配置服务器,然后spring应用程序可以通过它去访问git中的配置文件。

    搭建了下:

    1、设置配置文件的存储库。这里一般采用git文件存储库。初始化一个git仓库,上传文件a-bootiful-client.properties.

    message = Hello world! Hello Spring!!
    
    • 1

    2、建立配置服务器,相当于配置文件存储库与应用程序的中介。

    @EnableConfigServer
    @SpringBootApplication
    public class ConfigurationServiceApplication {
    
      public static void main(String[] args) {
        SpringApplication.run(ConfigurationServiceApplication.class, args);
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    @EnableConfigServer : 该注解用于开启 Spring Cloud Config 的配置服务功能。

    配置文件设置下:

    spring.application.name=config-server
    server.port=23500
    server.address=localhost
    
    # git repo
    spring.profiles.active=git
    spring.cloud.config.server.git.uri=https://github.com/Zhuao9705/creative-personal-backend.git
    spring.cloud.config.server.git.default-label=main
    spring.cloud.config.server.git.username=Zhuao9705
    spring.cloud.config.server.git.password=********
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    3、构建一个config client去从config server读取配置

    @SpringBootApplication
    public class ConfigClientApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(ConfigClientApplication.class, args);
        }
        @RefreshScope
        @RestController
        class MessageRestController {
    
            @Value("${message:Hello default}")
            private String message;
    
            @RequestMapping("/message")
            String getMessage() {
                return this.message;
            }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    @RefreshScope注解:是Spring Cloud中的一个注解,当配置发生变更的时候可以在不重启应用的前提下完成bean中相关属性的刷新。

    设置下配置文件:

    spring.application.name=a-bootiful-client
    spring.config.import=optional:configserver:http://localhost:23500/
    management.endpoints.web.exposure.include=*
    
    • 1
    • 2
    • 3

    测试:

    启动配置服务器和应用程序后,执行
    在这里插入图片描述
    可以直接从该接口获取配置文件的值。

    如果修改了git中配置文件的值改为message = Hello world! ,可以执行actuator的端点,去刷新客户端并重新获取值。

    $ curl localhost:8080/actuator/refresh -d {} -H "Content-Type: application/json"
    
    • 1

    然后再执行一下
    在这里插入图片描述
    参考文献:https://stevenocean.github.io/2020/12/31/spring-cloud-config-refresh.html


    guide24、Accessing data with MySQL

    主要讲的是怎么连接mysql,去进行操作数据。

    主要的连接配置信息如下:

    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/zhuao?useUnicode=true&allowMultiQueries=true&characterEncoding=utf-8&useSSL=true&autoReconnect=true&serverTimezone=Asia/Shanghai
        username: ****
        password: ******
        driver-class-name: com.mysql.cj.jdbc.Driver
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    guide25、Creating API Documentation with Restdocs

    主要讲的是用spring rest docs为API生成文档。这里面涉及到了spring boot的单元测试。

    Spring REST Docs 是一个为 Spring 项目生成 API 文档的框架,它通过在单元测试中额外添加 API
    信息描述,从而自动生成对应的文档片段。

    单元测试可以参考下:https://cloud.tencent.com/developer/article/1779117

    Guide涉及注解:

    @SpringBootTest: @SpringBootTest注解告诉SpringBoot去寻找一个主配置类,并使用它来启动Spring应用程序上下文。SpringBootTest加载完整的应用程序并注入所有可能的bean,因此速度会很慢。

    在这种情况下,不需要创建 MockMvc bean,可以直接通过RestTemplate进行请求测试(或者使用TestRestTemplate)。


    @RunWith(SpringRunner.class):让JUnit运行Spring的测试环境,获得Spring环境的上下文的支持

    @SpringBootTest
    @RunWith(SpringRunner.class)
    public class XXXServiceTest {
    	@Resource
    	private XXXService XXXService;
    	
    	@Test
    	public void conflictTime() {
    	  }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    @AutoConfigureMockMvc:用于自动配置MockMvc,配置后MockMvc类可以直接注入,相当于new MockMvc。

    @AutoConfigureRestDocs(outputDir = “target/snippets”):开启了生成snippets文件,并指定了存放位置。

    @WebMvcTest:@WebMvcTest注解主要用于controller层测试,只覆盖应用程序的controller层,HTTP请求和响应是Mock出来的,因此不会创建真正的连接。因此需要创建 MockMvc bean进行模拟接口调用。

    @WebMvcTest(HomeController.class)
    @AutoConfigureRestDocs(outputDir = "target/snippets")
    public class WebLayerTest {
    
       @Autowired
       private MockMvc mockMvc;
    
       @Test
       public void shouldReturnDefaultMessage() throws Exception {
          this.mockMvc.perform(get("/")).andDo(print()).andExpect(status().isOk())
                .andExpect(content().string(containsString("Hello, World")))
                .andDo(document("home"));
       }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    执行测试方法后,生成的adoc文件可以在指定文件下看到。
    在这里插入图片描述
    对比下:

    1. Spring Boot的单元测试主要针对方法层面,可以测试Service层这类非对外暴露的接口的类中方法。
    2. Postman针对接口进行http测试,平时这个比较多,创建的测试接口可保存、分类。
  • 相关阅读:
    java基础之重载与重写
    spring cloud 之 Netflix Eureka
    java毕业设计大学生食堂饭菜价格信息管理系统mybatis+源码+调试部署+系统+数据库+lw
    竞争不是内卷,用头脑学习,而非时间
    使用WGCLOUD监控oracle表空间大小的笔记
    使用Flink的各种技术实现WordCount逻辑
    AVR汇编(二):AVR架构介绍
    2022 前端面试题
    第十四章大数据和数据科学
    【Spring Cloud实战】Spring Cloud Bus消息总线
  • 原文地址:https://blog.csdn.net/weixin_42120561/article/details/130890682