当前位置: 首页 > news >正文

泰州网站制作策划如何做网站需求

泰州网站制作策划,如何做网站需求,ajax wordpress 评论,北京网站制作公司都在哪里配置类在Spring Boot框架中扮演着关键角色#xff0c;它使开发者能够利用Java代码定义Bean、设定属性及调整其他Spring相关设置#xff0c;取代了早期版本中依赖的XML配置文件。 集中化管理#xff1a;借助Configuration注解#xff0c;Spring Boot让用户能在一个或几个配…配置类在Spring Boot框架中扮演着关键角色它使开发者能够利用Java代码定义Bean、设定属性及调整其他Spring相关设置取代了早期版本中依赖的XML配置文件。 集中化管理借助Configuration注解Spring Boot让用户能在一个或几个配置类中统一管理所有配置信息。这种方式不仅简化了Bean的定义和配置还提高了配置管理和维护的效率避免了分散在多个XML文件中的复杂性。类型安全配置由于配置工作是在Java代码内完成因此可以充分利用Java编译时的类型检查机制确保配置的准确性。这种做法有效防止了因拼写错误或配置不当引起的运行时错误增强了应用程序的稳定性和可靠性。条件化配置能力该框架还提供了基于条件的配置选项允许根据特定条件例如环境变量、系统属性等动态决定是否创建或配置某个Bean。这项特性增加了应用部署的灵活性使其更易于适应不同的运行环境和需求变化。自动装配Autowiring支持Spring Boot内置的自动装配功能可以根据Bean的类型、名称或是限定符自动注入所需的依赖项。这大大减少了手动配置依赖关系的工作量同时也降低了配置出错的风险。 示例代码 首先定义一个yml的配置文件 spring:application:name: demo-springbootjackson:time-zone: Asia/Shanghaidate-format: yyyy-MM-dd HH:mm:ssdefault-property-inclusion: non_null server:port: 8888servlet:context-path: /api logging:level:root: errorcom.coderlk: debug app:config:upload-addr: /opt/uploadapp-key: 12345678 解析配置文件 下面的这个Bean映射到application.yml 中的app:config:xxx的配置 package com.coderlk.interceptor.demo.config;import lombok.Data;Data public class AppConfigProperties {private String uploadAddr;private String appKey; } UploadTools.java package com.coderlk.interceptor.demo.config;import lombok.Data; import lombok.extern.slf4j.Slf4j;Data Slf4j public class UploadTools {private AppConfigProperties appConfigProperties;public void upload() {log.info(app.config:{}, appConfigProperties);} } AppConfiguration.java package com.coderlk.interceptor.demo.config;import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate;Configuration public class AppConfiguration {Value(${spring.application.name})public String appName;Beanpublic RestTemplate restTemplate() {return new RestTemplate();}BeanConfigurationProperties(prefix app.config)public AppConfigProperties appConfigProperties() {return new AppConfigProperties();}Beanpublic AppConfigProperties appConfigPropertiesNon() {return new AppConfigProperties();}Beanpublic UploadTools uploadTools(Qualifier(appConfigProperties) AppConfigProperties properties) {UploadTools uploadTools new UploadTools();uploadTools.setAppConfigProperties(properties);return uploadTools;} }关键点解析 Configuration标记该类是一个配置类其中的方法可以用 Bean 注解来定义Spring容器管理的bean。**Value(...)∗∗用于将配置文件如‘application.yml‘或‘application.properties‘中的值注入到字段、构造函数参数或方法参数中。这里的‘...)∗∗用于将配置文件如‘application.yml‘或‘application.properties‘中的值注入到字段、构造函数参数或方法参数中。这里的‘{spring.application.name}是Spring Boot默认提供的属性之一代表应用的名字。Bean用来声明一个方法其返回的对象应该被注册为Spring容器中的一个bean。每个Bean方法实际上就是一种创建bean的方式。ConfigurationProperties(prefix app.config)允许你将一组特定前缀的配置属性映射到一个Java对象上。这简化了从配置文件读取多个相关属性的过程。在这个例子中所有以app.config开头的属性都会映射到AppConfigProperties对象中。AppConfigProperties 和 UploadTools是我们自定义的组件类AppConfigProperties可能用于保存应用程序的配置属性而UploadTools则可能是负责处理上传逻辑的组件它依赖于AppConfigProperties来进行某些操作。 测试 请求体 GET http://localhost:8888/api/uploader Token: 213coiu423m 控制台打印结果 INFO 13428 --- [interceptor-demo] [nio-8888-exec-5] c.c.interceptor.demo.config.UploadTools : app.config:AppConfigProperties(uploadAddr/opt/upload, appKey12345678) 单元测试 Spring Boot 3 与 JUnit 5 的集成使得开发者可以方便地为他们的应用程序编写和运行单元测试及集成测试。以下是有关如何在 Spring Boot 3 中使用 JUnit 5 进行测试的一些关键点 依赖管理 确保项目中包含相关依赖 默认情况下spring-boot-starter-test 依赖项已经包含了 JUnit 5 的支持因此你通常不需要显式添加 JUnit 5 的依赖。如果你需要特定版本的 JUnit 5 或者有其他特殊需求则可以在 pom.xml对于 Maven 项目或 build.gradle对于 Gradle 项目中添加相应的依赖。 dependencies!-- Spring Boot Starter Test包含JUnit 5支持 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency /dependencies 编写测试 配置JUnit 5 Spring Boot 3 默认启用了 JUnit 5因此只需按照 JUnit 5 的方式编写测试代码即可。你可以直接使用 SpringBootTest 注解来加载 Spring Boot 应用程序上下文进行集成测试。 编写测试类 创建一个简单的 JUnit 5 测试类并使用 SpringBootTest 加载整个应用上下文。使用 Test、BeforeEach、AfterEach 等注解定义测试方法及其生命周期行为。 import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest;SpringBootTest class MyApplicationTests {Testvoid test() {// 这里写测试逻辑} } JUnit 5 新特性 JUnit 5 新增特性 注解提供了如 ParameterizedTest、RepeatedTest、DisplayName 等新注解。断言JUnit 5 提供了更加强大的内置断言库比如 Assertions.assertThat() 和假设条件 Assumptions.assumeThat()。嵌套测试通过 Nested 注解实现更加结构化的测试组织允许创建内部类来进行分组测试。扩展模型可以通过 ExtendWith 注解引入自定义扩展从而增强测试功能。 例如下面是一个使用了多个新特性的测试例子 import static org.junit.jupiter.api.Assertions.*; import static org.junit.jupiter.api.Assumptions.*;import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Timeout; import org.junit.jupiter.api.extension.ExtendWith;class StandardTests {BeforeAllstatic void initAll() { /* 初始化 */ }BeforeEachvoid init() { /* 每个测试前执行 */ }DisplayName(成功的测试)Testvoid succeedingTest() { /* 测试逻辑 */ }Testvoid failingTest() {fail(一个失败的测试);}TestDisabled(为了演示目的禁用)void skippedTest() { /* 不会被执行 */ }Testvoid abortedTest() {assumeTrue(abc.contains(Z));fail(测试应该被终止);}AfterEachvoid tearDown() { /* 每个测试后执行 */ }AfterAllstatic void tearDownAll() { /* 清理工作 */ }NestedDisplayName(当栈是新的时候)class WhenNew {StackObject stack;BeforeEachvoid createNewStack() {stack new Stack();}TestDisplayName(是空的)void isEmpty() {assertTrue(stack.isEmpty());}TestDisplayName(抛出异常时弹出)void throwsExceptionWhenPopped() {assertThrows(EmptyStackException.class, stack::pop);}} } 综上所述在 Spring Boot 3 中使用 JUnit 5 可以让你充分利用现代 Java 测试框架的优点同时保持与 Spring 生态系统的紧密集成。这不仅简化了测试设置过程还提高了测试代码的质量和可读性。 断言 JUnit 5 提供了一个丰富的断言库允许开发者编写清晰、表达力强的测试用例。相比之前的版本JUnit 5 的断言功能更为强大和灵活支持多种类型的断言以适应不同的测试场景。以下是一些常用的 JUnit 5 断言方法及其使用示例 基本断言 assertEquals(expected, actual)验证两个值是否相等。 assertTrue(condition) 和 assertFalse(condition)检查条件是否为真或假。 assertNull(object) 和 assertNotNull(object)检查对象是否为 null 或不为 null。 package com.coderlk.interceptor.demo;import org.junit.jupiter.api.Test;import static org.junit.jupiter.api.Assertions.*;public class UnitDemoTest {Testvoid basicAssertions() {assertEquals(2 2, 4, 简单的加法);assertTrue(foo.startsWith(f), 字符串开始于 f);assertNull(null, 值应该是null);} } 集合和数组断言 Test void collectionAssertions() {String[] expected {a, b, c};String[] actual {a, b, c};assertArrayEquals(expected, actual, 数组应该相等);ListString expectedList Arrays.asList(apple, banana, orange);ListString actualList Arrays.asList(apple, banana, orange);assertIterableEquals(expectedList, actualList, 列表应该相等); } 异常处理断言 assertThrows(exceptionClass, executable)用于验证代码块是否抛出了预期的异常。 Test void exceptionAssertions() {Exception exception assertThrows(IllegalArgumentException.class, () - {throw new IllegalArgumentException(一个非法参数异常);});assertEquals(一个非法参数异常, exception.getMessage()); } 超时断言 assertTimeout(timeout, executable)确保一段代码在指定时间内完成执行。assertTimeoutPreemptively(Duration timeout, Executable executable)强制性地限制一段代码的执行时间并在超时时立即终止执行。 Test void timeoutAssertions() {// 如果这段代码超过1秒测试将失败assertTimeout(Duration.ofSeconds(1), () - {// 执行一些操作...});// 使用 preemptive 超时策略如果超时则立即中断执行assertTimeoutPreemptively(Duration.ofMillis(100), () - {Thread.sleep(200); // 这个应该会导致超时异常}); } 组合断言 assertAll(Executable... executables)可以将多个断言组合在一起在所有断言都通过的情况下才认为整个断言成功。如果任何一个断言失败则整个测试失败。 Test void multipleAssertions() {assertAll(() - assertEquals(2, 2),() - assertTrue(hello.startsWith(he)),() - assertFalse(test.isEmpty())); } 条件断言 assumeTrue(boolean condition) 和 assumeFalse(boolean condition)假设条件成立或不成立如果不满足假设条件则跳过该测试。 Test void conditionalAssertions() {assumeTrue(abc.contains(a));// 如果假设条件不满足后面的代码不会被执行System.out.println(假设条件满足); } 这些只是 JUnit 5 断言库的一部分功能。JUnit 5 的断言机制非常强大且灵活能够帮助开发者更有效地进行单元测试和集成测试确保应用程序的质量和可靠性。如果你需要更加复杂的断言逻辑还可以考虑使用第三方库如 AssertJ 或 Hamcrest它们提供了更加丰富的断言功能。 本课程学习代码同步更新到 https://gitcode.com/fokman/springboot-demo.gitGitCode是面向全球开发者的开源社区,包括原创博客,开源代码托管,代码协作,项目管理等。与开发者社区互动,提升您的研发效率和质量。https://gitcode.com/fokman/springboot-demo.git
http://www.w-s-a.com/news/947745/

相关文章:

  • 门户网站优化报价软件技术公司
  • 怎样换网站logo公司名字大全集免费
  • 为网站网站做推广各类最牛网站建设
  • 网站用自己的电脑做服务器佛山做网站制作公司
  • 一个网站如何做cdn加速器如何上传网站数据库
  • 汝州住房和城乡建设局新网站营销网站定位
  • yy直播官网seo引擎优化是什
  • 做影视网站违法莫品牌营销是什么
  • 全网最稳最低价自助下单网站wordpress电影网站主题
  • 域名更换网站温州建设工程网站
  • 网站如何优化推广连锁店管理网站开发
  • 伊宁市做网站功能性质网站
  • 北京哪个网站制作公司优化大师免费安装下载
  • 同江佳木斯网站设计做网站联系电话
  • 设计上海展会2023seo网站模板下载
  • 开发一个卖东西的网站多少站长工具永久
  • 公司网站怎么突然多了好多友情链接如何删除宁波有几个区
  • 临沂seo网站推广wordpress新编辑器
  • c2c网站设计店面logo设计制作
  • 网站建设任务执行书重庆今天新闻事件
  • 怎样发布自己的网站南宁制作网站公司
  • wordpress装多站点百度查一下
  • 怎么优化一个网站搭建网站免费空间
  • 山东建设和城乡建设厅注册中心网站首页wordpress安装教材
  • 个人风采网站制作毕节网站开发公司电话
  • 网络网站销售设计主题和设计理念
  • 做网站一般用什么服务器承德专业做网站
  • 松北区建设局网站网站建设分为几种
  • 网站建设的合同 体会智联招聘网站建设情况
  • 记的网站域名wordpress地方信息主题