【持续更新】Java学习笔记之我要学习SpringBoot

@RunWith(SpringRunner.class)

@RunWith(SpringRunner.class)的作用表明Test测试类要使用注入的类,比如使用@Autowired注入的类,有了@RunWith(SpringRunner.class)这些类才能实例化到spring容器中,自动注入才能生效

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)

通常用于Spring Boot应用程序中的集成测试。它指定了测试应该在随机端口上运行,而不是在应用程序的默认端口上。使用这个注解可以避免测试与正在运行的应用程序冲突的问题,并且可以确保测试将始终在类似于生产环境的配置下进行。

具体来说,@SpringBootTest 是在JUnit测试的上下文中启动完整的Spring应用程序上下文,即启动Spring Boot应用程序并加载所有bean。webEnvironment 参数指定要在哪种类型的Web环境中运行测试。RANDOM_PORT 模式意味着应用程序将在一个随机的可用端口上启动,而不是在默认端口上(通常为8080)。这将允许多个测试并行运行,而不必手动管理端口号或担心端口冲突。

@LocalServerPort

用于在Spring Boot测试中注入当前应用程序正在运行的端口号。它通常与 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) 一起使用,该注解指定测试应该在随机端口上运行。

在集成测试中,应用程序的端口号是在运行时分配的,并且可能会因为其他进程占用同一端口而发生变化。使用 @LocalServerPort 注解,您可以以编程方式获取实际端口号并将其用于测试。例如,您可以使用该端口号创建一个HTTP客户端来与应用程序进行交互,或者将其传递给测试中需要使用端口号的其他组件。

下面是一个使用 @LocalServerPort 注解的示例:

@RunWith(SpringRunner.class)

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)

public class MyIntegrationTest {

        @LocalServerPort private int port;

        // other test methods...

}

在此示例中,port 变量将被注入当前应用程序正在运行的端口号。

@Test

如果使用JUnit框架中的@Test注解来标记一个方法,那么该方法就会被自动识别为一个测试用例,并在执行测试时被调用。

因此,无论该方法是否被实例调用,只要运行了JUnit测试,该方法就会被自动执行。

需要注意的是,使用@Test注解标记的测试方法必须满足一定的要求,例如方法必须公共可见性(public)、没有返回值(void)、没有参数、并且不应抛出任何异常等,否则可能会导致测试失败。

@RestController

在 Spring 框架中,你可以使用 @Controller 注解来标记一个类为控制器(controller),然后在这个类中定义处理 HTTP 请求的方法。当请求到达时,Spring MVC 会根据请求 URL 去找到相应的控制器和方法来处理这个请求,并返回一个响应。

如果使用了 @ResponseBody 注解,则表示该方法返回的响应内容不是一个视图,而是一个普通对象。Spring MVC 会自动将这个对象转换成 JSON 或 XML 格式,并写入到 HTTP 响应体中。

@RestController 注解就是把这两个注解结合在一起了。它告诉 Spring MVC,这个类不仅是一个控制器,还需要将方法的返回值序列化成 JSON 或 XML 格式,并作为 HTTP 响应的主体返回给调用方。也就是说,在一个 @RestController 类中,所有方法都会被声明为 @ResponseBody 的,所以我们无需每个方法上都添加 @ResponseBody 注解。

总之,@RestController 可以帮助我们更方便地构建 RESTful web 服务。

@SpringBootApplication

@SpringBootApplication 是 Spring Boot 的核心注解之一,它是一个组合注解,包括了 @Configuration@EnableAutoConfiguration@ComponentScan 三个注解的功能。

  • @Configuration 注解表示这个类是一个配置类,会被 Spring IoC 容器用来扫描和装配 Bean。
  • @EnableAutoConfiguration 注解可以自动配置 Spring Boot 应用程序,并根据项目所添加的依赖项对应用程序进行启动配置。它使用了 Spring Boot 的自动配置机制,根据项目中存在的类和 jar 包自动配置 Spring 应用程序。
  • @ComponentScan 注解会扫描指定包及其子包下的所有类,查找并注册容器管理的 Bean。这样就可以让 Spring Boot 自动扫描到我们写的控制器、服务等组件。

因此,通常情况下,我们在 Spring Boot 项目的启动类上都需要加上 @SpringBootApplication 注解,以便完成应用程序的基本配置和启动。

@Server

@Service 是 Spring 框架中的一个注解,通常用于标记一个类为服务层组件(service layer component)。它表示这个类是一个业务逻辑层面上的组件,用于处理具体的业务逻辑,比如对数据库进行操作。

在 Spring 应用程序中,我们通常使用 @Service 注解来标记服务层组件。当一个类被 @Service 注解修饰时,Spring 容器会自动将其识别为一个服务层组件,并将其注册到容器中管理。

例如,在下面的代码中,MyService 类使用了 @Service 注解:

 
 

java复制代码

@Service public class MyService { private final SomeThirdPartyObject someThirdPartyObject; public MyService(SomeThirdPartyObject someThirdPartyObject) { this.someThirdPartyObject = someThirdPartyObject; } // ... }

这意味着 MyService 类可以被其他组件依赖注入,并且可以通过 @Autowired@Resource 注解来自动注入它所依赖的其他 Bean。此外,我们还可以在 MyService 类中定义一些业务逻辑方法,以方便对数据库或其他资源的访问和操作。

@Bean

在Spring Boot中,@Bean是用于将方法返回的对象注册为Spring应用程序上下文中的bean的注释。使用@Bean注释的方法必须在@Configuration注释的类中声明。

当Spring容器启动时,它会扫描所有已标记为@Configuration的类,并查找@Bean注释的方法。Spring容器将调用这些方法并将它们的返回值注册为bean。这些bean可以在应用程序中使用@Autowired注释来注入到其他组件中。

因此,@Bean注释提供了一种简单的方式来定义和注册bean,允许开发人员使用自定义实现来创建和管理应用程序中的对象。

@Data

@Data 是一个由 Lombok 提供的注解,它可以自动生成类的 getter、setter、toString()equals()hashCode() 方法,减少了手写这些方法的代码量。同时,它还可以生成全参构造函数和空参构造函数。

使用 @Data 注解的类需要在类上添加 @NoArgsConstructor@AllArgsConstructor 注解以生成无参和有参构造函数。此外,还需添加 @ToString@EqualsAndHashCode 注解,它们会分别生成 toString()equals()hashCode() 方法。

总之,使用 @Data 可以轻松地生成一些常用的代码,使代码更加简洁、易读,提高开发效率。

猜你喜欢

转载自blog.csdn.net/LforikQ/article/details/130573048
今日推荐