【JAVA进阶篇教学】第七篇:Spring中常用注解

简介: 【JAVA进阶篇教学】第七篇:Spring中常用注解

博主打算从0-1讲解下java进阶篇教学,今天教学第七篇:Spring中常用注解


在Java Spring框架中,注解(Annotation)是一种元数据,它提供了关于程序代码的额外信息,这些信息可以用于编译时检查、运行时处理或者在部署时生成配置文件。注解可以被应用在类、方法、字段等地方,用于提供额外的配置信息或者标记某些特性。下面我将介绍几个常用的Spring注解,并提供详细说明和代码示例。

一、常用注解

1.@Component

@Component 是 Spring 框架中最常用的注解之一,它用于将一个 Java 类标识为 Spring 管理的组件,让 Spring 容器自动扫描并注册该组件。

@Component
public class MyComponent {
    // 类的具体实现
}

2.@Autowired

@Autowired 注解用于自动装配 Spring Bean,它可以在需要依赖注入的地方使用,让 Spring 框架自动将符合类型的 Bean 注入到对应的变量中。

@Component
public class MyComponent {
 
    private MyService myService;
 
    @Autowired
    public MyComponent(MyService myService) {
        this.myService = myService;
    }
 
    // 其他方法使用 myService
}

3.@Controller

@Controller 注解用于标识一个类是 Spring MVC 中的 Controller,它处理用户请求并返回相应的视图或数据。

@Controller
public class MyController {
 
    @GetMapping("/hello")
    public String hello() {
        return "hello";
    }
}

4.@Service

@Service 注解用于标识一个类是服务层组件,通常用于业务逻辑的处理。

@Service
public class MyService {
 
    public void doSomething() {
        // 业务逻辑处理
    }
}

5.@Repository

@Repository 注解用于标识一个类是数据访问层的组件,通常用于数据库操作。

@Repository
public class MyRepository {
 
    public void save(MyEntity entity) {
        // 数据库操作
    }
}

6.@RequestMapping

@RequestMapping 注解用于映射请求路径到具体的处理方法,可以用在 Controller 类或方法上。

@Controller
@RequestMapping("/api")
public class MyController {
 
    @GetMapping("/hello")
    public String hello() {
        return "hello";
    }
}

7.@Configuration

@Configuration 注解用于标识一个类是配置类,它通常和 @Bean 注解一起使用,用于配置 Spring 容器。

@Configuration
public class AppConfig {
 
    @Bean
    public MyService myService() {
        return new MyServiceImpl();
    }
}

8.@Bean

@Bean 注解用于在配置类中定义一个 Bean,Spring 容器会根据该方法返回的对象来注册 Bean。

@Configuration
public class AppConfig {
 
    @Bean
    public MyService myService() {
        return new MyServiceImpl();
    }
}

9.@Value

@Value 注解用于将配置文件中的值注入到变量中。

@Component
public class MyComponent {
 
    @Value("${my.property}")
    private String myProperty;
 
    // 其他方法使用 myProperty
}

10.@Profile

@Profile 注解用于指定在特定环境下才激活的 Bean。

@Configuration
@Profile("dev")
public class DevConfig {
 
    @Bean
    public MyService myService() {
        return new MyServiceImpl();
    }
}

11.@Qualifier

@Qualifier 注解用于指定注入的 Bean 的名称。

@Component
public class MyComponent {
 
    @Autowired
    @Qualifier("myService")
    private MyService myService;
 
    // 其他方法使用 myService
}

12.@Transactional

@Transactional 注解用于声明事务管理。

@Service
public class MyService {
 
    @Autowired
    private MyRepository myRepository;
 
    @Transactional
    public void saveEntity(MyEntity entity) {
        myRepository.save(entity);
    }
}

13.@Aspect

@Aspect 注解用于声明一个切面,用于定义横切关注点和通知类型(例如前置通知、后置通知等)。

@Aspect
@Component
public class LoggingAspect {
 
    @Before("execution(* com.example.service.*.*(..))")
    public void beforeAdvice(JoinPoint joinPoint) {
        // 在方法执行前执行的逻辑
    }
}

14.@ResponseBody

@ResponseBody 注解用于将方法的返回值直接作为 HTTP 响应体返回。

@Controller
public class MyController {
 
    @GetMapping("/hello")
    @ResponseBody
    public String hello() {
        return "Hello, world!";
    }
}

15.@RestController

@RestController 注解是 @Controller 和 @ResponseBody 的组合,用于标识一个类是 RESTful 控制器。

@RestController
public class MyRestController {
 
    @GetMapping("/api/hello")
    public String hello() {
        return "Hello, world!";
    }
}

16.@PathVariable

@PathVariable 注解用于从 URL 中获取参数值。

@RestController
@RequestMapping("/api")
public class MyRestController {
 
    @GetMapping("/hello/{name}")
    public String hello(@PathVariable String name) {
        return "Hello, " + name + "!";
    }
}

17.@RequestParam

@RequestParam 注解用于从请求参数中获取值。

@RestController
@RequestMapping("/api")
public class MyRestController {
 
    @GetMapping("/hello")
    public String hello(@RequestParam String name) {
        return "Hello, " + name + "!";
    }
}

18.@RequestBody

@RequestBody 注解用于将 HTTP 请求体中的数据绑定到方法的参数上,通常用于处理 POST 或 PUT 请求中的 JSON 数据。

@RestController
@RequestMapping("/api")
public class MyRestController {
 
    @PostMapping("/user")
    public String createUser(@RequestBody User user) {
        // 处理接收到的用户信息
        return "User created successfully!";
    }
}

19.@GetMapping

@GetMapping 注解用于将 HTTP GET 请求映射到特定的处理方法上。

@Controller
public class MyController {
 
    @GetMapping("/hello")
    public String hello() {
        return "hello";
    }
}

20.@PostMapping

@PostMapping 注解用于将 HTTP POST 请求映射到特定的处理方法上。

@RestController
@RequestMapping("/api")
public class UserController {
 
    @PostMapping("/user")
    public String createUser(@RequestBody User user) {
        // 处理接收到的用户信息
        return "User created successfully!";
    }
}

以上是一些常用的 Spring 注解,它们可以帮助我们更方便地开发和管理 Spring 应用程序。通过合理地使用注解,可以让代码更简洁、可读性更高,同时提高开发效率。

相关文章
|
1月前
|
XML Java 编译器
Java注解的底层源码剖析与技术认识
Java注解(Annotation)是Java 5引入的一种新特性,它提供了一种在代码中添加元数据(Metadata)的方式。注解本身并不是代码的一部分,它们不会直接影响代码的执行,但可以在编译、类加载和运行时被读取和处理。注解为开发者提供了一种以非侵入性的方式为代码提供额外信息的手段,这些信息可以用于生成文档、编译时检查、运行时处理等。
74 7
|
1月前
|
Java Spring
【Spring】方法注解@Bean,配置类扫描路径
@Bean方法注解,如何在同一个类下面定义多个Bean对象,配置扫描路径
171 73
|
25天前
|
Java Spring
Java Spring Boot监听事件和处理事件
通过上述步骤,我们可以在Java Spring Boot应用中实现事件的发布和监听。事件驱动模型可以帮助我们实现组件间的松耦合,提升系统的可维护性和可扩展性。无论是处理业务逻辑还是系统事件,Spring Boot的事件机制都提供了强大的支持和灵活性。希望本文能为您的开发工作提供实用的指导和帮助。
77 15
|
30天前
|
Java Spring 容器
【SpringFramework】Spring IoC-基于注解的实现
本文主要记录基于Spring注解实现IoC容器和DI相关知识。
52 21
|
22天前
|
监控 JavaScript 数据可视化
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
|
1月前
|
存储 Java Spring
【Spring】获取Bean对象需要哪些注解
@Conntroller,@Service,@Repository,@Component,@Configuration,关于Bean对象的五个常用注解
|
1月前
|
Java Spring
【Spring配置】idea编码格式导致注解汉字无法保存
问题一:对于同一个项目,我们在使用idea的过程中,使用汉字注解完后,再打开该项目,汉字变成乱码问题二:本来a项目中,汉字注解调试好了,没有乱码了,但是创建出来的新的项目,写的注解又成乱码了。
|
1月前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
89 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
1月前
|
Java 编译器 数据库
Java 中的注解(Annotations):代码中的 “元数据” 魔法
Java注解是代码中的“元数据”标签,不直接参与业务逻辑,但在编译或运行时提供重要信息。本文介绍了注解的基础语法、内置注解的应用场景,以及如何自定义注解和结合AOP技术实现方法执行日志记录,展示了注解在提升代码质量、简化开发流程和增强程序功能方面的强大作用。
101 5
|
2月前
|
前端开发 Java Spring
Spring MVC核心:深入理解@RequestMapping注解
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的核心,它将HTTP请求映射到控制器的处理方法上。本文将深入探讨`@RequestMapping`注解的各个方面,包括其注解的使用方法、如何与Spring MVC的其他组件协同工作,以及在实际开发中的应用案例。
59 4