《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!!

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

@EnableConfigServer
@SpringBootApplication
public class ConfigurationServiceApplication {

  public static void main(String[] args) {
    SpringApplication.run(ConfigurationServiceApplication.class, args);
  }
}

@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=********

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;
        }
    }
}

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

设置下配置文件:

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

测试:

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

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

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

然后再执行一下
在这里插入图片描述
参考文献: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

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() {
	  }
}

@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"));
   }
}

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

  1. Spring Boot的单元测试主要针对方法层面,可以测试Service层这类非对外暴露的接口的类中方法。
  2. Postman针对接口进行http测试,平时这个比较多,创建的测试接口可保存、分类。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值