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

江苏网站备案暂住证谷歌搜索入口手机版

江苏网站备案暂住证,谷歌搜索入口手机版,简约大气ppt模板下载,西安网站建设首选那家Spring Boot 注释是提供有关 Spring 应用程序信息的元数据。 基于 Spring 构建,涵盖其所有功能, Spring Boot 因其生产就绪环境而迅速成为开发人员的最爱,它允许开发人员直接专注于逻辑,而无需配置和设置的麻烦。 Spring Boot 是一…

Spring Boot 注释是提供有关 Spring 应用程序信息的元数据。
基于 Spring 构建,涵盖其所有功能,
Spring Boot 因其生产就绪环境而迅速成为开发人员的最爱,它允许开发人员直接专注于逻辑,而无需配置和设置的麻烦。
Spring Boot 是一个基于微服务的框架,允许在最短的时间内创建可用于生产的应用程序。

以下是 Spring Boot 的一些主要特性:
它避免了 Spring 中繁重的 XML 配置。
它提供了易于维护和创建 REST 端点的功能。
它包括一个嵌入式 Tomcat 服务器。
部署非常容易;WAR 和 JAR 文件可以轻松部署到 Tomcat 服务器。
Spring Boot 注释通常位于包org.springframework.boot.autoconfigure和org.springframework.boot.autoconfigure.condition中,对于使用 Spring Boot 至关重要。

常见的 Spring Boot 注解、其用途和示例
1.@SpringBoot应用程序:
此注释用于启动 Spring Boot 应用程序。

它结合了三个注解:@Configuration、@EnableAutoConfiguration 和 @ComponentScan。

例子:

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

2.@RestController:
该注解表明该类是一个 RESTful 控制器,结合了@Controller 和@ResponseBody。
例子:

@RestController
public class MyController {@GetMapping("/hello")public String hello() {return "Hello, World!";}
}

此注释在 Spring 4 中引入,它消除了使用 @ResponseBody 注释控制器类中的每个请求处理方法的需要。
我们来看一下比较:

@Controller
@RequestMapping("/api/v1")
public class EmployeeController {@Autowiredprivate EmployeeRepository employeeRepository;@GetMapping("/employees")public @ResponseBody List<Employee> getAllEmployees() {return employeeRepository.findAll();}@GetMapping("/employees/{id}")public @ResponseBody ResponseEntity<Employee> getEmployeeById(@PathVariable(value = "id") Long employeeId)throws ResourceNotFoundException {Employee employee = employeeRepository.findById(employeeId).orElseThrow(() -> new ResourceNotFoundException("Employee not found for this id :: " + employeeId));return ResponseEntity.ok().body(employee);}@PostMapping("/employees")public @ResponseBody Employee createEmployee(@Valid @RequestBody Employee employee) {return employeeRepository.save(employee);}@PutMapping("/employees/{id}")public @ResponseBody ResponseEntity<Employee> updateEmployee(@PathVariable(value = "id") Long employeeId,@Valid @RequestBody Employee employeeDetails) throws ResourceNotFoundException {Employee employee = employeeRepository.findById(employeeId).orElseThrow(() -> new ResourceNotFoundException("Employee not found for this id :: " + employeeId));employee.setEmailId(employeeDetails.getEmailId());employee.setLastName(employeeDetails.getLastName());employee.setFirstName(employeeDetails.getFirstName());final Employee updatedEmployee = employeeRepository.save(employee);return ResponseEntity.ok(updatedEmployee);}@DeleteMapping("/employees/{id}")public @ResponseBody Map<String, Boolean> deleteEmployee(@PathVariable(value = "id") Long employeeId)throws ResourceNotFoundException {Employee employee = employeeRepository.findById(employeeId).orElseThrow(() -> new ResourceNotFoundException("Employee not found for this id :: " + employeeId));employeeRepository.delete(employee);Map<String, Boolean> response = new HashMap<>();response.put("deleted", Boolean.TRUE);return response;}
}

在此示例中,每个返回值都用@ResponseBody注释。

为了在我们的示例中使用 @RestController,我们需要用 @RestController 替换 @Controller,并从每个方法中删除 @ResponseBody。生成的类应如下所示:

@RestController
@RequestMapping("/api/v1")
public class EmployeeController {@Autowiredprivate EmployeeRepository employeeRepository;@GetMapping("/employees")public List<Employee> getAllEmployees() {return employeeRepository.findAll();}@GetMapping("/employees/{id}")public ResponseEntity<Employee> getEmployeeById(@PathVariable(value = "id") Long employeeId)throws ResourceNotFoundException {Employee employee = employeeRepository.findById(employeeId).orElseThrow(() -> new ResourceNotFoundException("Employee not found for this id :: " + employeeId));return ResponseEntity.ok().body(employee);}@PostMapping("/employees")public Employee createEmployee(@Valid @RequestBody Employee employee) {return employeeRepository.save(employee);}@PutMapping("/employees/{id}")public ResponseEntity<Employee> updateEmployee(@PathVariable(value = "id") Long employeeId,@Valid @RequestBody Employee employeeDetails) throws ResourceNotFoundException {Employee employee = employeeRepository.findById(employeeId).orElseThrow(() -> new ResourceNotFoundException("Employee not found for this id :: " + employeeId));employee.setEmailId(employeeDetails.getEmailId());employee.setLastName(employeeDetails.getLastName());employee.setFirstName(employeeDetails.getFirstName());final Employee updatedEmployee = employeeRepository.save(employee);return ResponseEntity.ok(updatedEmployee);}@DeleteMapping("/employees/{id}")public Map<String, Boolean> deleteEmployee(@PathVariable(value = "id") Long employeeId)throws ResourceNotFoundException {Employee employee = employeeRepository.findById(employeeId).orElseThrow(() -> new ResourceNotFoundException("Employee not found for this id :: " + employeeId));employeeRepository.delete(employee);Map<String, Boolean> response = new HashMap<>();response.put("deleted", Boolean.TRUE);return response;}
}

有了这个注解,代码的可读性就大大提高了。

3.@RequestMapping:
此注解用于将 Web 请求映射到特定的处理程序方法。它可以在类或方法级别应用。
例子:

@RestController
@RequestMapping("/api")
public class MyController {@GetMapping("/hello")public String hello() {return "Hello, World!";}
}

4.@Autowired:
此注解用于 Spring bean 中的自动依赖注入。它可以应用于字段、构造函数或方法。

简单来说它有两个作用:

@Autowired 注释用于自动注入 Bean。
@Autowired 注解用于构造函数注入、setter 注入和字段注入。
例子:

@Service
public class MyService {private MyRepository repository;@Autowiredpublic MyService(MyRepository repository) {this.repository = repository;}
}

另一个例子:

@Autowired
private EmployeeRepository employeeRepository;

5.@Component:
@Component 注释在 Spring 框架中用于将某个类标记为 Spring 管理的组件。
它允许 Spring 自动扫描并实例化它,使其可通过依赖注入在应用程序中使用。
通常用于表示业务逻辑层、持久层、控制器等,它允许 Spring 管理它们的生命周期并注入依赖项。
简单来说,@Component注解用于标记一个类为Spring管理的组件。
例子:

@Component
public class MyComponent {// ...
}


6.@Service:
此注解用于表明某个类是 Spring bean 的一个特殊类型,通常用于业务逻辑。通常称为服务层。

例子:

@Service
public class MyService {// ...
}

更多Spring Boot注解及其详解。

7.@Repository:
该注解用来表明某个类是特殊类型的Spring bean,通常用于数据库访问。
例子:

import org.springframework.stereotype.Repository;@Repository
public class UserRepository {public void saveUser(User user) {// Implement logic to save user to database}public User getUserById(Long id) {// Implement logic to retrieve user by ID from databasereturn null;}// Other data access methods...
}

在这个例子中,UserRepository该类被标记了@Repository,表明它是一个由Spring容器管理的数据访问组件,用于执行与用户数据相关的持久化操作。

有些人可能不太熟悉这个注释,但@Repository 与@Controller、@Service 和@Component 一样,表示该对象应该由 Spring 管理。

@Repository 用于持久层接口,将其中一个实现类分配给 Spring 管理。

它和MyBatis的@Mapper比较类似,在程序中,MyBatis需要在编译时找到对应的mapper并生成代理类,以实现数据库查询功能。

@Mapper和@Repository都用于持久层接口上。

即使没有这个注解,我们经常也看不到错误,因为 Spring 的配置文件中包含一个MapperScannerConfigurer可以扫描持久层接口并创建实现类供 Spring 管理的 bean。

类似地,在主应用程序类中添加@MapperScan 可以达到相同的效果MapperScannerConfigurer。

8.@Configuration:
此注解用于将类声明为配置类。它通常与使用 @Bean 注解的方法结合使用。
例子:

import org.springframework.boot.SpringApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import com.companyname.projectname.customer.CustomerService;
import com.companyname.projectname.order.OrderService;@Configuration
public class Application {@Beanpublic CustomerService customerService() {return new CustomerService();}@Beanpublic OrderService orderService() {return new OrderService();}
}

上述AppConfig类相当于以下 Spring XML:

<beans><bean id="customerService" class="com.companyname.projectname.CustomerService"/><bean id="orderService" class="com.companyname.projectname.OrderService"/>
</beans>

该注解一般用于配置Swagger、MyBatis等属性。

9.@Value:
此注释用于将属性文件或其他来源的值注入到 Spring bean 中。
例子:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;@Component
public class MyComponent {@Value("${my.property}")private String myProperty;public void displayPropertyValue() {System.out.println("The value of my.property is: " + myProperty);}
}

在此示例中,@Value(“${my.property}”)将 Spring 属性的值注入到myProperty字段中。

假设应用程序的配置文件中有一个名为“my.property”的属性,

它的值将被注入到myProperty字段中。此注释通常用于代码生成器中,以避免硬编码值。

10.@EnableAutoConfiguration:
此注解启用了 Spring Boot 的自动配置机制,该机制根据类路径依赖项和属性来配置应用程序。

例子:

@SpringBootApplication
@EnableAutoConfiguration
public class MyApplication {// ...
}

使用@EnableAutoConfiguration:

Spring Boot 根据项目的依赖项和配置自动配置各种应用程序组件,例如数据源,JPA 和 Web 组件。
该类MyService将被Spring容器自动扫描和管理。
没有@EnableAutoConfiguration:

开发人员需要手动配置各种应用程序组件,增加了开发工作量。
该类MyService不会被自动扫描,并且必须为 Spring 容器管理明确配置。
要排除特定的自动配置类,exclude可以使用@EnableAutoConfiguration 属性:

例子:

@EnableAutoConfiguration(excludeName = {"org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration","org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration"
})

11.@GetMapping、@PostMapping、@PutMapping、@DeleteMapping:
这些注解用于将特定的 HTTP 方法映射到处理程序方法。它们是相应 HTTP 方法的快捷方式。

例子:

@RestController
@RequestMapping("/api")
public class MyController {@GetMapping("/hello")public String hello() {return "Hello, World!";}@PostMapping("/data")public void saveData(@RequestBody Data data) {// Save data}
}

12.@PathVariable:
该注解用于将方法参数绑定到URL路径变量。

方法参数名称和 URL 变量匹配的示例:

@RestController
@RequestMapping("/api")
public class MyController {@GetMapping("/users/{id}")public User getUser(@PathVariable Long id) {// Retrieve user by given ID}
}

具有不同方法参数名称和 URL 变量的示例:

@RestController
@RequestMapping("/api")
public class MyController {@GetMapping("/users/{id}")public User getUser(@PathVariable("id") Long userId) {// Retrieve user by given ID}
}

13.@RequestParam:
该注解用于将方法参数与请求参数绑定。
例子:

@RestController
@RequestMapping("/api")
public class MyController {@GetMapping("/users")public List<User> getUsers(@RequestParam("status") String status) {// Retrieve users by given status}
}

@RequestParam和@PathVariable之间的区别:

参数:
用于从查询参数中获取值。
查询参数通常通过符号后的 URL 传递?(例如?name=John&age=25)。
在方法参数中使用指定参数名,Spring自动注入相应的值。
适用于简单数据类型以及使用 的 GET 或 POST 请求application/x-www-form-urlencoded。
例子:

@GetMapping("/users")
public String getUserByName(@RequestParam("name") String name) {// Retrieve user by namereturn "User name: " + name;
}

概括:

@PathVariable:用于从URL路径获取值。
@RequestParam:用于从 URL 查询参数中获取值。

14.@RequestBody:
此注解用于将请求主体绑定到方法参数。它通常用于 RESTful API 中接收 JSON 或 XML 负载。

例子:

@RestController
@RequestMapping("/api")
public class MyController {@PostMapping("/users")public void createUser(@RequestBody User user) {// Create a new user}
}

在这个例子中,Spring 根据 自动将请求体转换为对象User。Content-Type如果请求的Content-Type为application/json,则请求体可能如下所示:

{"name": "xiaou","age": 25
}

@RequestParam和@RequestBody之间的区别:
参数:
用于查询参数,通常是简单数据类型。
适用于处理带有查询参数的表单提交或 GET 请求。
例子:

@GetMapping("/users")
public String getUserByName(@RequestParam("name") String name) {// Retrieve user by namereturn "User name: " + name;
}

@RequestBody:
用于请求主体,通常是复杂数据类型(例如 JSON 或 XML)。
适合处理具有大型或复杂负载的 POST 请求。
例子:

@PostMapping("/users")
public String createUser(@RequestBody User user) {// Process received user objectreturn "User created: " + user.toString();
}

概括:
@PathVariable:用于从URL路径中获取参数。
@RequestParam:用于从URL查询字符串中获取参数。
@RequestBody:用于从HTTP请求体中获取参数。

15.@Qualifier:
该注解用于指定当有多个相同类型的bean时,应该注入哪个bean。
例子:

@Component("fooFormatter")
public class FooFormatter implements Formatter {public String format() {return "foo";}
}@Component("barFormatter")
public class BarFormatter implements Formatter {public String format() {return "bar";}
}@Component
public class FooService {@Autowired@Qualifier("fooFormatter")private Formatter formatter;// Additional code
}

在此示例中,@Qualifier(“fooFormatter”)确保fooFormatterbean 被注入到FooService。

16.@ConditionalOnProperty:
此批注用于根据属性的值有条件地启用或禁用 bean 或配置。

例子:

@Configuration
@ConditionalOnProperty(name = "my.feature.enabled", havingValue = "true")
public class MyConfiguration {// Configuration that is enabled only if my.feature.enabled is true
}

17.@Scheduled:
此注解用于以固定间隔安排方法的执行。
例子:

@Component
public class MyScheduler {@Scheduled(fixedDelay = 5000)public void doSomething() {// Task executed at fixed intervals}
}

18.@Cacheable、@CachePut、@CacheEvict:
这些注释用于缓存方法结果。它们分别允许您缓存方法返回值、更新缓存或从缓存中逐出条目。
例子:

@Service
public class MyService {@Cacheable("users")public User getUserById(Long id) {// Retrieve user from database}@CachePut("users")public User updateUser(User user) {// Update user in database and cache}@CacheEvict("users")public void deleteUser(Long id) {// Delete user from database and cache}
}

网络注释

1.@CookieValue:
用于从 HTTP 请求中提取特定的 Cookie 值。
例子:

@GetMapping("/showUser")
public String showUser(@CookieValue("username") String username) {// Logic using the extracted cookie valuereturn "User: " + username;
}

2.@ModelAttribute:
用于将请求参数绑定到模型对象,通常用于将表单数据传递给处理程序方法。
例子:

@PostMapping("/saveUser")
public String saveUser(@ModelAttribute User user) {// Logic to save userreturn "redirect:/users";
}

3.@ResponseStatus:
用于指定处理程序方法或异常的 HTTP 状态代码。
例子:

@ResponseStatus(HttpStatus.NOT_FOUND)
public class ResourceNotFoundException extends RuntimeException {// Custom exception
}@ControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(ResourceNotFoundException.class)@ResponseStatus(HttpStatus.NOT_FOUND)public String handleResourceNotFoundException() {return "resourceNotFound";}
}

4.@ExceptionHandler:
用于定义控制器中的方法来处理特定的异常。
例子:

@Controller
public class MyController {@ExceptionHandler(Exception.class)public ModelAndView handleException(Exception ex) {ModelAndView modelAndView = new ModelAndView("error");modelAndView.addObject("errorMessage", ex.getMessage());return modelAndView;}
}

数据注释

1.@Entity:
用于将某个类标记为 JPA 实体,通常映射到数据库表。
例子:

@Entity
@Table(name = "employees")
public class Employee {// Entity attributes and methods
}

2. @Table:
用于指定实体映射到的表的详细信息。
例子:

@Entity
@Table(name = "products", schema = "inventory")
public class Product {// Entity attributes and methods
}

3.@Id:
用于指定实体的主键。
例子:

@Entity
@Table(name = "employees")
public class Employee {@Idprivate Long id;// Other attributes and methods
}

4.@GeneratedValue:
用于指定主键的生成策略。
例子:

@Entity
@Table(name = "employees")
public class Employee {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;// Other attributes and methods
}

5.@Column:
用于指定字段映射到的列的详细信息。
例子:

@Entity
@Table(name = "employees")
public class Employee {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@Column(name = "emp_name", length = 50, nullable = false)private String name;// Other attributes and methods
}

6.@Transient:
用于指定某个字段不应持久保存到数据库中。
例子:

@Entity
@Table(name = "employees")
public class Employee {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@Column(name = "emp_name", length = 50, nullable = false)private String name;@Transientprivate transientField;// Other attributes and methods
}

7.@PersistenceContext:
用于注入EntityManager用于管理实体持久性操作。

@Service
public class EmployeeService {@PersistenceContextprivate EntityManager entityManager;// Other methods
}

8.@Query:
此批注用于声明自定义 JPQL(Java 持久性查询语言)查询。
它可以在 Repository 接口或实体类中的方法上使用。
例子:

@Repository
public interface EmployeeRepository extends JpaRepository<Employee, Long> {@Query("SELECT e FROM Employee e WHERE e.department = ?1")List<Employee> findByDepartment(Department department);
}

9.@NamedQuery:
此批注用于在实体类上声明命名查询。
命名查询是预定义的 JPQL 查询,可以在多个地方引用。
例子:

@Entity
@NamedQuery(name = "Employee.findAll", query = "SELECT e FROM Employee e")
public class Employee {// Entity attributes and methods
}

10.@Param:
此注释用于引用JPQL查询中的命名参数。
@Query它在注释中以及查询字符串中的命名参数中使用。
例子:

@Repository
public interface EmployeeRepository extends JpaRepository<Employee, Long> {@Query("SELECT e FROM Employee e WHERE e.department = :dept")List<Employee> findByDepartment(@Param("dept") Department department);
}

11.@JoinTable:
此注解用于指定实体之间多对多关系的连接表的详细信息。
例子:

@Entity
public class Student {@ManyToMany@JoinTable(name = "student_course",joinColumns = @JoinColumn(name = "student_id"),inverseJoinColumns = @JoinColumn(name = "course_id"))private List<Course> courses;// Other attributes and methods
}

12.@JoinColumn:
此批注用于指定实体关联的外键列,通常用于多对一或一对一关系。
例子:

@Entity
public class Employee {@ManyToOne@JoinColumn(name = "department_id")private Department department;// Other attributes and methods
}

验证注解

这些注释通常在 Bean Validation(JSR-380)规范的上下文中使用,以验证
JavaBean 属性。

1.@Valid:
此注解用于指示嵌套对象的属性也应进行验证。它通常用于确保复杂对象的所有属性都经过验证。
例子:

public class Address {@NotNullprivate String street;// Other attributes and methods
}public class User {@Validprivate Address address;// Other attributes and methods
}

2.@NotNull:
此注解用于验证属性值不为空。它通常适用于String,Collection,Map或基本数据类型。

例子:

public class User {@NotNullprivate String username;// Other attributes and methods
}

3.@Size:
此注解用于验证属性值的大小是否在指定范围内。它可以应用于 String、Collection、Map 或数组属性。
例子:

public class User {@Size(min = 2, max = 50)private String name;// Other attributes and methods
}

4.@Min:
此注释用于验证属性值是否大于或等于指定的最小值。它通常用于数字属性。
例子:

public class User {@Min(18)private int age;// Other attributes and methods
}

5.@Max:
此注释用于验证属性值是否小于或等于指定的最大值。它通常用于数字属性。
例子:

public class User {@Max(100)private int age;// Other attributes and methods
}

6.@Email:
此注解用于验证属性值是否符合电子邮件地址的格式。它通常应用于字符串属性。
例子:

public class User {@Emailprivate String email;// Other attributes and methods
}

7.@Pattern:
此批注用于验证属性值是否与指定的正则表达式模式匹配。它允许自定义验证规则。
例子:

public class User {@Pattern(regexp = "^[A-Za-z0-9]+$")private String username;// Other attributes and methods
}

安全注解

这些注释通常用于 Spring Security 和 OAuth2 框架,用于配置与安全相关的功能和授权机制。

1.EnableWebSecurity:
启用 Spring Security 的 Web 安全支持。
它通常放在配置类中,以指示 Spring Boot 应用程序应该使用 Spring Security。
例子:

@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {// Configure security rules, etc.
}

2.@Configuration:
表示某个类是配置类。它通常与其他注解一起使用,定义 bean 并配置应用程序的各种功能。
例子:

@Configuration
public class AppConfig {// Define beans, etc.
}

3.@EnableGlobalMethodSecurity:
启用全局方法级安全性。它可以配置PreAuthorize、PostAuthorize、Secured和RolesAllowed注释。
例子:

@EnableGlobalMethodSecurity(prePostEnabled = true)
@Configuration
public class MethodSecurityConfig extends GlobalMethodSecurityConfiguration {// Configure method-level security rules
}

4.@PreAuthorize:
用于在执行方法之前执行授权检查。它允许使用 Spring 表达式语言 (SpEL) 来指定访问规则。
例子:

@PreAuthorize("hasRole('ROLE_ADMIN')")
public void deleteUser(User user) {// Logic for deleting a user
}

5.@PostAuthorize:
用于在执行方法后执行授权检查。它允许使用 Spring 表达式语言 (SpEL) 来指定访问规则。
例子:

@PostAuthorize("returnObject.owner == authentication.name")
public Object findDocument() {// Logic for returning a document
}

6.@Secured:
用于限制对方法的访问,指定调用该方法所需的角色。
例子:

@Secured("ROLE_ADMIN")
public void deleteUser(User user) {// Logic for deleting a user
}

7.@RolesAllowed:
用于限制对方法的访问,指定调用该方法所需的角色。
例子:

@RolesAllowed("ROLE_ADMIN")
public void deleteUser(User user) {// Logic for deleting a user
}

8.@EnableOAuth2Client, @EnableResourceServer, @EnableAuthorizationServer:
这些注释用于 OAuth2 配置,启用 OAuth2 客户端、资源服务器和授权服务器功能。它们通常放置在配置类上。
例子:

@Configuration
@EnableOAuth2Client
public class OAuth2ClientConfig {// Configure OAuth2 client
}@Configuration
@EnableResourceServer
public class ResourceServerConfig extends ResourceServerConfigurerAdapter {// Configure resource server
}@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {// Configure authorization server
}

测试注解

这些注释通常用于 JUnit 和 Spring Framework 中的测试相关功能。

1. @RunWith:
用于指定 JUnit 4 中的测试运行器。在 JUnit 5 中,它已被取代@ExtendWith。
例子:

@RunWith(SpringRunner.class)
public class MySpringTest {// Test code
}

2.@SpringBootTest:
用于启动完整的 Spring 应用程序上下文以进行集成测试。它会自动配置应用程序上下文。
例子:

@SpringBootTest
public class MyIntegrationTest {// Integration test code
}

3.@WebMvcTest:
用于对 Spring MVC 应用程序进行单元测试。它仅加载与 Web 相关的组件,例如控制器和过滤器。
例子:

@WebMvcTest(UserController.class)
public class UserControllerTest {// Controller unit test code
}

4.@DataJpaTest:
用于执行 JPA 持久层的单元测试。它会自动配置内存数据库(例如 H2)并扫描@Entity注释。
例子:

@DataJpaTest 
public  class  UserRepositoryTest {// JPA 单元测试代码
}

5.@DataJpaTest:
用于执行 Spring RestTemplate 或 WebClient 客户端的单元测试。它会自动配置 RestTemplate 或 WebClient bean。
例子:

@RestClientTest(MyRestClient.class) 
public  class  MyRestClientTest {// Rest 客户端单元测试代码
}

6.@MockBean:
用于创建模拟对象并将其注入 Spring 上下文。它替代 Spring bean 进行单元测试。
例子:

@SpringBootTest 
public  class  MyServiceTest {@MockBean private SomeDependency mockDependency; // 单元测试代码
}

7.@AutoConfigureMockMvc:
用于在 Spring MVC 测试中自动配置 MockMvc。它用于模拟对控制器的请求。
例子:

@WebMvcTest (UserController.class)
@AutoConfigureMockMvc 
public class UserControllerTest { @Autowired private MockMvc mockMvc; // 控制器测试代码
}

8.@Test、@Before、@After、@BeforeEach、@AfterEach、@BeforeAll、@AfterAll:
用于JUnit测试方法的生命周期管理。@Test标记一个测试方法,而其他注解在测试方法之前或之后执行特定的操作。
例子:

@Test 
public void testSomething () {// 测试方法
} @BeforeEach 
public void setUp () {// 每个测试方法之前的操作
} @AfterEach 
public void teaDown () {// 每个测试方法之后的操作
}
  1. @RestClientTest:
    用于指定测试类或测试方法的自定义名称。它用于生成更有意义的测试报告。
    例子:
@Test 
@DisplayName ( "测试用户注册功能" ) 
public void testUserRegistration () {// 测试方法
}

10.@Disabled:
用于禁用测试类或测试方法。在调试或开发过程中需要暂时跳过某些测试时使用。
例子:

@Test
@Disabled("Temporarily disabled, waiting for fix")
public void testSomething() {// Test method
}

11.@ParameterizedTest、@ValueSource、@CsvSource:
用于参数化测试,允许相同的测试方法使用不同的参数运行多次。@ValueSource指定单个参数值的列表,而@CsvSource指定多个参数值。
例子:

@ParameterizedTest
@ValueSource(strings = {"apple", "banana", "orange"})
public void testFruit(String fruit) {// Test method with different fruit parameters
}@ParameterizedTest
@CsvSource({"apple, 1", "banana, 2", "orange, 3"})
public void testFruit(String fruit, int count) {// Test method with different fruit and count parameters
}

12.@ExtendWith:
用于扩展测试运行时的功能,例如参数解析和条件评估。
例子:

@ExtendWith(MyExtension.class) 
public  class  MyTest {// 测试方法
}

消息注释

这些注释通常用于 Spring 框架的 JMS(Java 消息服务)消息传递功能,简化了 JMS 消息的生成和使用。

1.@EnableJms:
启用 JMS 功能。通常放置在配置类上以激活对 JMS 相关注释的支持。
例子:

@Configuration 
@EnableJms 
public class AppConfig { // 其他配置代码
}

2.@JmsListener:
声明一个方法作为 JMS 消息监听器,用于接收 JMS 消息。它可以指定要监听的队列或主题。
例子:

@JmsListener (destination = "myQueue" )public  void  acceptMessage ( String message ) {// 处理收到的消息
}

3.@SendTo:
指定消息处理方法中回复消息的目标。通常与 一起使用@JmsListener。
例子:

@JmsListener (destination = "inputQueue" )@SendTo ( "outputQueue" ) 
public String handleMessage (String message) {// 处理消息并返回结果
}

4.@MessageMapping:
标识用于处理特定目标消息的方法。通常与 Spring 的 WebSocket 支持一起使用来处理 WebSocket 消息。
例子:

@MessageMapping ( "/hello" )@SendTo ( "/topic/greetings" ) 
public Greeting Greeting (HelloMessage message) {// 处理消息并返回结果
}

5.@Payload:
指定JMS消息处理方法中的payload参数,用于获取JMS消息内容。
例子:

@JmsListener (destination = "myQueue" ) 
public void acceptMessage ( @Payload String message) {// 处理消息
}

6.@Header:
指定JMS消息处理方法中的header参数,用于获取JMS消息头信息。
例子:

@JmsListener (destination = "myQueue" ) 
public void acceptMessage ( @Header ( "X-Custom-Header" ) String customHeader) {// 处理消息头
}

面向方面编程 (AOP) 注释

这些注释通常用于 Spring 框架的面向方面编程 (AOP),以模块化横切关注点。

1.@Aspect:
定义一个方面,封装横切逻辑。方面是一个包含切入点和建议的类。
例子:

@Aspect 
@Component 
public class LoggingAspect { // 方面类的实现
}

2.@Pointcut:
定义切入点,指定应应用方面逻辑的位置。同一个切入点可在多个建议中重复使用。
例子:

@Pointcut("execution(* com.example.service.*.*(..))") 
private  void  serviceLayer () {}

3.@Before:
定义一个前置建议,在方法执行之前执行。它在连接点之前运行。
例子:

@Before("serviceLayer()") 
public  void  beforeAdvice () {// 之前建议的逻辑
}

4.@After:
定义一个后续通知,在方法执行后执行(无论方法结果如何)。它在连接点之后运行。
例子:

@After("serviceLayer()") 
public  void  afterAdvice () {// 后续建议的逻辑
}

5.@AfterReturning:
定义返回建议,在方法成功返回后执行。它仅当方法正常返回时运行。
例子:

@AfterReturning (pointcut = "serviceLayer()" , returned = "result" )public  void  afterReturningAdvice ( Object result ) {// 返回建议的逻辑
}

6.@AfterThrowing:
定义一个抛出通知,在方法抛出异常后执行。它仅当方法抛出异常时运行。
例子:

@AfterThrowing (pointcut = "serviceLayer()" , throwing = "exception" )public  void  afterThrowingAdvice ( Exception exception ) {// 抛出建议的逻辑
}

7.@Around:
定义一个环绕通知,在方法执行之前和之后执行。它控制方法的执行。
例子:

@Around("serviceLayer()") 
public Object aroundAdvice (ProceedingJoinPoint joinPoint)  throws Throwable {// 执行前逻辑Object  result  = joinPoint.proceed(); // 执行被建议的方法// 执行后逻辑return result; 
}

以下注释很少使用,因此简要总结。

执行器注释

这些注释用于启用和定制 Spring Boot Actuator,它为应用程序提供监控和管理功能。

这些注释用于启用和定制 Spring Boot Actuator,它为应用程序提供监控和管理功能。

@EnableActuator:
启用S​​pring Boot Actuator模块,提供应用程序监控和管理功能。

@Endpoint:
创建自定义端点,允许您公开自定义监控和管理端点。
例子:

@Endpoint(id = "customEndpoint")
public class CustomEndpoint {@ReadOperationpublic String read() {return "Custom Read Operation";}
}

@RestControllerEndpoint:
创建一个 REST 样式的端点以用作 REST 控制器。
例子:

@RestControllerEndpoint(id = "customRestEndpoint")
public class CustomRestEndpoint {@GetMapping("/custom")public String custom() {return "Custom REST Endpoint";}
}

@ReadOperation:
指定处理端点中的 GET 请求的方法。

@WriteOperation:
指定处理端点中的 POST 请求的方法。

@DeleteOperation:
指定处理端点中的 DELETE 请求的方法。

配置属性注释

这些注释用于将配置属性映射到 Java Bean。

@ConfigurationProperties:
将配置文件中的属性映射到 Java Bean。
例子:

@ConfigurationProperties(prefix = "app" ) 
public  class  AppProperties {private String name;private String version; // Getters 和 setters 
}

@ConstructorBinding:
将配置属性绑定到构造函数参数,通常与一起使用@ConfigurationProperties。

@Validated:
标记配置属性类以进行验证,通常与 JSR-380(Bean 验证)一起使用。

国际化和本地化

@EnableMessageSource:启用消息源处理,通常用于国际化和本地化。
@EnableWebMvc:启用 Spring MVC 功能,通常在配置类上使用以启用对 Spring MVC 的支持。
@LocaleResolver:解析请求中的区域信息。
@MessageBundle:指定国际化消息资源文件的基础名称。
@MessageSource:检索消息资源,通常与一起使用@Autowired。
日志记录和监控
@Slf4j,@Log4j2,@Log:
简化不同日志框架(SLF4J、Log4j2、JDK Logging)的记录器的创建。
例子:

@Slf4j
public class MyService {public  void  doSomething () { log.info ( "正在做某事" ) ; } 
}

@Timed、@Counted、@ExceptionMetered:
添加指标来监控方法执行时间、调用次数和异常。

数据验证

@NotNull,@NotBlank,@Email,@Size,@Pattern:
验证字段是否为非空、非空白、电子邮件格式、大小范围和正则表达式模式匹配。

@Positive,@PositiveOrZero,@Negative,@NegativeOrZero:
验证数字是正数、非负数、负数还是非正数。

GraphQL 注释

@GraphQLApi:将一个类标记为 GraphQL API 类。
@GraphQLQuery、@GraphQLMutation、@GraphQLSubscription:定义 GraphQL 查询、变异和订阅。
@GraphQLArgument、@GraphQLContext、@GraphQLNonNull、@GraphQLInputType、@GraphQLType:定义 GraphQL 参数、上下文、非空类型、输入类型和类型。

集成注释

@IntegrationComponentScan:扫描集成组件。
@MessagingGateway、@Transformer、@Splitter、@Aggregator、@ServiceActivator、@InboundChannelAdapter、@OutboundChannelAdapter、@Router、@BridgeTo:配置并定义集成组件。

Flyway 数据库迁移

@FlywayTest:测试 Flyway 数据库迁移。
@FlywayTestExtension:扩展Flyway测试功能。
@FlywayTestExtension.Test、@FlywayTestExtension.BeforeMigration、@FlywayTestExtension.AfterMigration:标记测试方法并在迁移之前和之后执行。

JUnit 5 注释

@ExtendWith:扩展 JUnit 5 功能。
@TestInstance:配置测试实例的生命周期。
@TestTemplate:指定测试模板方法。
@DisplayNameGeneration:自定义生成测试显示名称的策略。
@Nested:创建嵌套测试类。
@Tag:根据标签标记要运行的测试。
@DisabledOnOs、@EnabledOnOs、@DisabledIf、@EnabledIf:根据条件启用或禁用测试。

API 文档注释

@Api、@ApiOperation、@ApiParam、@ApiModel、@ApiModelProperty:定义并描述 API 文档详细信息。

异常处理注解

@ControllerAdvice:定义全局异常处理程序。
@ExceptionHandler:处理特定的异常。
GraphQL 注释(附加)
@GraphQLSchema、@GraphQLQueryResolver、@GraphQLMutationResolver、@GraphQLSubscriptionResolver、@GraphQLResolver:定义 GraphQL 模式和解析器。

服务器发送事件 (SSE) 注释

@SseEmitter:创建一个 SSE 事件发射器。
@SseEventSink:注入 SSE 事件接收器。
WebFlux 注释
@RestController、@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping:定义 WebFlux RESTful 控制器和请求映射。

计量注释

@Timed:测量方法执行时间。
@Counted:计算方法调用次数。
@Gauge:将方法公开为衡量指标。
@ExceptionMetered:测量方法异常率。

概括
这不是一份非常详尽的清单。Spring Boot 为各种模块和功能提供了大量注释。

有关完整列表和详细用法,请参阅官方 Spring Boot 文档和模块特定指南。

本摘要涵盖了常用的注释,但包括了您在典型项目中可能遇到的几乎所有注释。

http://www.dt0577.cn/news/30229.html

相关文章:

  • 手机网站代理企业网站推广可以选择哪些方法
  • 专业广州网站建设网络销售怎么做才能有业务
  • wordpress如何搭建一个购物网站简述网站建设流程
  • 公司网站首页导航html企业网站模板设计
  • 创建网站为啥要钱百度移动版
  • 免费网站建设官网网站seo优化是什么
  • 网页开发者工具大丰seo排名
  • 网站收录怎么设置360社区app
  • 邯郸市住房和城建设局网站金昌网站seo
  • 汕头网站建设系统企业网络营销策划书
  • 汕头网站建设系统竞价推广账户托管服务
  • 东莞住房和城乡建设厅网站热点事件
  • 黄浦上海网站建设市场调研分析
  • 中国建设银行招聘官网站郑州制作网站公司
  • wordpress安卓下载失败seo关键词优化软件怎么样
  • 最专业网站建设哪家好以服务营销出名的企业
  • 泊头那家做网站怎么看关键词的搜索量
  • 寻花问柳-专注做一家男人的网站app下载推广
  • 做网站如何找客户阿里巴巴seo排名优化
  • 淘宝联盟做网站seo是哪里
  • 心理健康网站建设论文关键词优化如何
  • 建站公司外贸营销公司排行
  • wordpress影视解析插件佛山优化网站关键词
  • 江西中联建设集团有限公司网站关键词汇总
  • 网站建设app是什么营销宣传方案
  • 在线看网站建设百度商城app
  • 二维码扫描360优化大师官方下载手机
  • 衡阳网站优化方案谷歌广告上海有限公司
  • 优秀品牌网站案例分析百度seo在线优化
  • 手机网站跟pc网站有什么不同大白兔网络营销策划书