Java springboot里注解大全和使用指南(最新整理)

 更新时间:2026年03月20日 16:00:39   作者:奋力向前123  
在Java Spring Boot中,注解是简化开发、提高效率的关键工具,这篇文章给大家介绍Java springboot里注解大全和使用指南,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

在 Java Spring Boot 中,注解是简化开发、提高效率的关键工具。以下是一些核心注解及其使用指南,按功能分类整理:

一、核心启动与配置注解

  • @SpringBootApplication
    • 作用:Spring Boot 应用的核心注解,用于标记主启动类。它是一个组合注解,等价于同时使用 @Configuration@EnableAutoConfiguration 和 @ComponentScan
    • 使用场景:必须添加在 Spring Boot 应用的主启动类上,是应用启动的必要条件。
  • 示例
@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

@Configuration

  • 作用:声明当前类是一个配置类,相当于 Spring 的 XML 配置文件。
  • 使用场景:用于定义和配置 Bean,通常配合 @Bean 注解一起使用。
  • 示例
@Configuration
public class AppConfig {
    @Bean
    public DataSource dataSource() {
        // 配置并返回一个数据源 Bean
        return new HikariDataSource();
    }
}
  • @EnableAutoConfiguration
    • 作用:启用 Spring Boot 的自动配置机制,根据类路径和配置文件中的信息自动配置 Spring 应用。
    • 使用场景:通常与 @SpringBootApplication 一起使用,无需单独使用。
  • @ComponentScan
    • 作用:自动扫描指定包及其子包下的组件(如 @Component@Service@Repository@Controller 等),并将它们注册为 Spring Bean。
    • 使用场景:通常与 @SpringBootApplication 一起使用,无需单独使用。若需自定义组件扫描范围,可通过 basePackages 属性指定。
  • 示例
@SpringBootApplication(scanBasePackages = "com.example.demo")
public class DemoApplication {
    // ...
}

二、组件注册注解

  • @Component
    • 作用:通用的组件注解,用于标记任何类为 Spring 的组件。Spring 会自动扫描并创建该类的实例。
    • 使用场景:当组件不属于 ControllerServiceRepository 等特定层级时使用。
  • 示例
@Component
public class ToolUtil {
    public String formatStr(String str) {
        return str.trim().toUpperCase();
    }
}

@Service

  • 作用:标记业务逻辑层(Service 层)的组件,是 @Component 的特化版本,语义更加明确。
  • 使用场景:用于封装核心业务逻辑。
  • 示例
@Service
public class UserService {
    public User getUserById(Integer id) {
        // 实际场景中会调用 Repository 层查询数据库
        User user = new User();
        user.setId(id);
        user.setName("李四");
        return user;
    }
}

@Repository

  • 作用:标记数据访问层(DAO 层)的组件,是 @Component 的特化版本。除了将类注册为 Bean 外,它还额外提供了持久化异常转换的功能。
  • 使用场景:用于封装数据访问逻辑,与数据库交互。
  • 示例
@Repository
public interface UserRepository extends JpaRepository<User, Integer> {
    User findByName(String name);
}

@Controller

  • 作用:标记控制层组件,用于接收 HTTP 请求并返回视图或数据。
  • 使用场景:Web 层控制器类,处理用户请求(如页面跳转、表单提交等)。
  • 示例
@Controller
@RequestMapping("/user")
public class UserController {
    @GetMapping("/info")
    public String userInfo(Model model) {
        model.addAttribute("username", "张三");
        return "user-info"; // 返回视图名
    }
}

@RestController

  • 作用:组合注解,相当于 @Controller + @ResponseBody。用于构建 RESTful API,返回 JSON/XML 等数据格式,而非视图。
  • 使用场景:前后端分离项目的接口层,提供 RESTful API(如移动端接口、前端 AJAX 请求接口)。
  • 示例
@RestController
@RequestMapping("/api/user")
public class UserRestController {
    @GetMapping("/info")
    public User getUserInfo() {
        User user = new User();
        user.setId(1);
        user.setName("张三");
        return user; // 直接返回 User 对象,会自动转为 JSON
    }
}

三、依赖注入注解

  • @Autowired
    • 作用:自动注入依赖的 Bean,Spring 会在 IoC 容器中查找匹配类型的 Bean 并注入到目标字段、构造方法或 setter 方法中。
    • 使用场景:需要注入其他 Bean 依赖时(如 Service 层注入 Repository 层、Controller 层注入 Service 层)。
    • 示例
@RestController
public class UserRestController {
    private final UserService userService;
    @Autowired
    public UserRestController(UserService userService) {
        this.userService = userService;
    }
    @GetMapping("/info")
    public User getUserInfo() {
        return userService.getUserById(1);
    }
}

@Qualifier

  • 作用:与 @Autowired 一起使用,用于指定要注入的 Bean 的名称。当存在多个相同类型的 Bean 时,可以使用 @Qualifier 来指定注入哪一个。
  • 使用场景:解决相同类型 Bean 的歧义性注入问题。
  • 示例
@RestController
public class UserRestController {
    private final UserService userService;
    @Autowired
    @Qualifier("userServiceImpl") // 指定注入的 Bean 名称
    public UserRestController(UserService userService) {
        this.userService = userService;
    }
    // ...
}

@Value

  • 作用:注入配置文件中的值,可以注入 Stringintlongdoubleboolean 等类型。
  • 使用场景:从配置文件中读取配置值并注入到 Bean 的属性中。
  • 示例
@Component
public class AppConfig {
    @Value("${server.port}")
    private int port;

    // ...
}

四、Web 开发注解

  • @RequestMapping
    • 作用:映射 HTTP 请求到处理方法,可以用于类和方法上。用于指定请求 URL 和 HTTP 方法(GET、POST、PUT、DELETE 等)。
    • 使用场景:处理 Web 请求,将请求映射到具体的处理方法上。
    • 示例
@RestController
@RequestMapping("/api/user")
public class UserRestController {
    @GetMapping("/info")
    public User getUserInfo() {
        // ...
    }
    @PostMapping("/create")
    public User createUser(@RequestBody User user) {
        // ...
    }
}

@GetMapping@PostMapping@PutMapping@DeleteMapping

  • 作用:分别用于映射 HTTP GET、POST、PUT、DELETE 请求到处理方法上。它们是 @RequestMapping 的特化,分别对应不同的 HTTP 请求方法。
  • 使用场景:简化 RESTful API 的开发,直接对应 HTTP 方法。
  • 示例
@RestController
@RequestMapping("/api/user")
public class UserRestController {
    @GetMapping("/info")
    public User getUserInfo() {
        // ...
    }
    @PostMapping("/create")
    public User createUser(@RequestBody User user) {
        // ...
    }
}

@RequestParam

  • 作用:用于将请求参数绑定到 Controller 方法的参数上。
  • 使用场景:获取 URL 查询参数或表单提交的参数。
  • 示例
@GetMapping("/search")
public List<User> searchUsers(@RequestParam String name, @RequestParam(defaultValue = "10") int size) {
    // ...
}

@PathVariable

  • 作用:用于获取请求路径中的参数,通常用于 RESTful 风格的 API 上。
  • 使用场景:从 URL 路径中提取参数值。
  • 示例
@GetMapping("/user/{id}")
public User getUserById(@PathVariable Long id) {
    // ...
}

@RequestBody

  • 作用:用于接收请求体中的 JSON 数据,并将其绑定到 Controller 方法的参数上。
  • 使用场景:处理 POST、PUT 等请求中的 JSON 数据。
  • 示例
@PostMapping("/create")
public User createUser(@RequestBody User user) {
    // ...
}

@ResponseBody

  • 作用:表示该方法的返回结果直接写入 HTTP 响应体中,返回数据的格式为 application/json。通常与 @Controller 一起使用,若使用 @RestController 则无需使用此注解。
  • 使用场景:返回 JSON/XML 等数据格式,而非视图。
  • 示例
@Controller
public class UserController {
    @GetMapping("/info")
    @ResponseBody
    public User getUserInfo() {
        User user = new User();
        user.setId(1);
        user.setName("张三");
        return user;
    }
}

到此这篇关于Java springboot里注解大全和使用指南(最新整理)的文章就介绍到这了,更多相关 springboot注解使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 示例解析java重载Overloading与覆盖Overriding

    示例解析java重载Overloading与覆盖Overriding

    这篇文章主要介绍了java重载Overloading与覆盖Overriding的示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • Java如何获取当前进程ID以及所有Java进程的进程ID

    Java如何获取当前进程ID以及所有Java进程的进程ID

    本篇文章主要介绍了Java如何获取当前进程ID以及所有Java进程的进程ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • 系统讲解Java如何优雅地打印日志

    系统讲解Java如何优雅地打印日志

    本文将介绍如何优雅地打印日志,告别 System.out.println,使用专业的日志框架(Logback/Log4j2)来管理日志,让你的日志更专业、更规范、更易于排查问题
    2026-05-05
  • Java网络编程基础用法详解

    Java网络编程基础用法详解

    网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来,本文将带大家详细了解Java的网络编程,文中有相关的代码示例,需要的朋友可以参考下
    2023-05-05
  • Mybatis使用@one和@Many实现一对一及一对多关联查询

    Mybatis使用@one和@Many实现一对一及一对多关联查询

    本文主要介绍了Mybatis使用@one和@Many实现一对一及一对多关联查询,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • IDEA中database使用教程

    IDEA中database使用教程

    idea集成了一个数据库管理工具,可以可视化管理很多种类的数据库,本文主要介绍了IDEA中database使用教程,具有一定的参考价值,感兴趣的可以了解一下
    2023-06-06
  • Java自定义异常与异常使用的最佳方式

    Java自定义异常与异常使用的最佳方式

    这篇文章主要介绍了Java自定义异常与异常使用的最佳方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • java实现pdf文件截图的方法【附PDFRenderer.jar下载】

    java实现pdf文件截图的方法【附PDFRenderer.jar下载】

    这篇文章主要介绍了java实现pdf文件截图的方法,结合实例形式分析了java基于PDFRenderer.jar进行pdf文件截图的相关操作技巧,并附带PDFRenderer.jar文件供读者下载使用,需要的朋友可以参考下
    2018-01-01
  • java中如何获取时间戳的方法实例

    java中如何获取时间戳的方法实例

    时间戳通常是一个字符序列,唯一地标识某一刻的时间,所以下面这篇文章主要给大家介绍了关于java中如何获取时间戳的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-11-11
  • SpringBoot实现验证码的案例分享

    SpringBoot实现验证码的案例分享

    验证码可以有效防止其他人对某一个特定的注册用户用特定的程序,破解方式进行不断的登录尝试,我们其实很经常看到,登录一些网站其实是需要验证码的,所以本文给大家分享了SpringBoot实现验证码的案例,需要的朋友可以参考下
    2024-11-11

最新评论