Spring Boot注解总结大全【案例详解,一眼秒懂】

  1. @SpringBootApplication
    • 功能 :这是Spring Boot应用的核心注解,它是一个组合注解,实际上相当于同时使用了@Configuration@EnableAutoConfiguration@ComponentScan。它标记在主应用类上,用于开启Spring Boot的自动配置功能,扫描组件并加载应用程序上下文。
    • 示例
java 复制代码
import org.springframework.boot.SpringBootApplication;

@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringBootApplication.run(MyApplication.class, args);
    }
}
复制代码
- 在这个示例中,`MyApplication`是主应用类,`@SpringBootApplication`注解告诉Spring Boot这是一个应用的入口点,并且要开启自动配置、扫描组件等操作。
  1. @RestController
    • 功能 :是@Controller@ResponseBody的组合注解。@Controller表示这个类是一个Spring MVC控制器,用于处理Web请求;@ResponseBody表示方法的返回值直接作为HTTP响应体返回,而不是解析为视图名称,通常用于构建RESTful风格的Web服务。
    • 示例
java 复制代码
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, World!";
    }
}
复制代码
- 这里的`HelloController`类被`@RestController`注解标记,`sayHello`方法处理`/hello`路径的`GET`请求,并直接返回一个字符串作为响应内容。
  1. @GetMapping、@PostMapping、@PutMapping、@DeleteMapping等
    • 功能 :这些注解是Spring MVC提供的用于简化HTTP请求方法映射的注解。@GetMapping用于处理GET请求,@PostMapping用于处理POST请求,@PutMapping用于处理PUT请求,@DeleteMapping用于处理DELETE请求。它们都可以指定请求路径作为参数。
    • 示例
java 复制代码
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {
    @GetMapping("/users")
    public String getUsers() {
        // 返回用户列表的逻辑
        return "List of users";
    }

    @PostMapping("/users")
    public String addUser() {
        // 添加用户的逻辑
        return "User added";
    }

    @PutMapping("/users/{id}")
    public String updateUser() {
        // 更新用户的逻辑
        return "User updated";
    }

    @DeleteMapping("/users/{id}")
    public String deleteUser() {
        // 删除用户的逻辑
        return "User deleted";
    }
}
复制代码
- 这个`UserController`类展示了如何使用这些注解来处理不同类型的HTTP请求,用于对用户资源进行CRUD(创建、读取、更新、删除)操作。
  1. @RequestMapping
    • 功能 :这是一个比较通用的请求映射注解,可以用于处理多种HTTP请求方法。它可以指定请求路径、请求方法、请求头、请求参数等条件来匹配请求。@GetMapping等注解实际上是@RequestMapping的简化形式。
    • 示例
java 复制代码
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/books")
public class BookController {
    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public String getBookById() {
        // 根据ID获取图书的逻辑
        return "Book details";
    }
}
复制代码
- 这里`BookController`类使用`@RequestMapping`注解指定了基础路径为`/books`,`getBookById`方法使用`@RequestMapping`再次指定了请求路径为`/{id}`并且请求方法为`GET`,用于获取指定ID的图书信息。
  1. @Autowired
    • 功能 :用于自动装配Spring容器中的Bean。当Spring容器中有一个类型匹配的Bean时,它会自动将这个Bean注入到被@Autowired注解标记的字段、方法参数或构造函数参数中。
    • 示例
java 复制代码
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {
    private final UserRepository userRepository;

    @Autowired
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
    // 其他业务逻辑
}
复制代码
- 在这个`UserService`类中,通过构造函数注入了`UserRepository`。`@Autowired`注解告诉Spring容器自动找到`UserRepository`类型的Bean并注入到构造函数中。
  1. @Service、@Component、@Repository、@Controller(前面已提及部分功能)
    • 功能:这些注解都是用于标记Spring中的组件,使得Spring容器能够扫描并管理这些组件。
      • @Service:用于标记业务逻辑层的组件,表明这个类是一个服务类,主要用于处理业务逻辑。
      • @Component:是一个通用的组件注解,用于标记任何Spring管理的组件。如果一个类不符合@Service@Repository@Controller的语义,但又需要被Spring容器管理,就可以使用@Component
      • @Repository:用于标记数据访问层(如数据库访问)的组件,它还具有一些额外的功能,比如在数据访问出现异常时会自动转换为Spring的DataAccessException体系的异常。
    • 示例
java 复制代码
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {
    // 业务逻辑实现
}
java 复制代码
import org.springframework.stereotype.Component;

@Component
public class MyComponent {
    // 组件功能实现
}
java 复制代码
import org.springframework.stereotype.Repository;

@Repository
public class UserRepositoryImpl implements UserRepository {
    // 数据访问逻辑实现
}
  1. @Configuration
    • 功能:用于标记一个类作为配置类,在这个类中可以定义Bean、导入其他配置类、设置属性源等。它相当于一个XML配置文件的Java版,用于配置Spring容器中的Bean和其他相关设置。
    • 示例
java 复制代码
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class AppConfig {
    @Bean
    public MyBean myBean() {
        return new MyBean();
    }
}
复制代码
- 在这个`AppConfig`配置类中,`@Bean`注解用于定义一个Bean,方法名(`myBean`)默认作为Bean的名称,方法的返回值就是Bean的实例。
  1. @Value
    • 功能 :用于将外部配置文件(如application.propertiesapplication.yml)中的属性值注入到Spring管理的组件中。可以用于注入简单类型的值,如字符串、数字等。
    • 示例
java 复制代码
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class MyComponent {
    @Value("${my.property}")
    private String myProperty;
    // 其他逻辑
}
复制代码
- 假设在`application.properties`文件中有`my.property=Hello`,那么`myProperty`字段就会被注入值`"Hello"`。
相关推荐
EXI-小洲几秒前
Spring AI (第二章)大模型对话上下文记忆
java·人工智能·spring
扬大平仔10 分钟前
# 小深:用 AgentScope Java 2.0 Harness 做私人助手(上)mysql
java·开发语言·mysql
java porter12 分钟前
我开源了一个 Spring AI Agent 项目
后端
阿里云基础软件20 分钟前
一句话看透 JVM,SysOM 诊断 Skill 新增 Java 应用诊断能力
java·开发语言·jvm·人工智能·操作系统·sysom 诊断 skill
Wang's Blog33 分钟前
Java框架快速入门: Spring Security+OAuth2之自动化集成测试
java·spring·自动化
1360967572336 分钟前
AgentScope 2.0 学习笔记:RAG 进阶——Top-K 调优与幻觉测试(让 Agent 敢说「不知道」)
后端
yume_sibai43 分钟前
07-Rust 异步编程完全指南(async/await + Tokio + Future + 并发原语 + 异步流)
开发语言·后端·rust
Sylvia33.1 小时前
板球实时数据接入实战:从Frames模型到多赛制适配
java·python·websocket·网络协议·架构
Zzzzmo_1 小时前
SpringBoot 日志
java·spring boot·spring
2601_953988071 小时前
Ricon组态 - 让数据可视化如此简单
运维·后端·物联网·数学建模·前端框架·c4前端