【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 应用程序。通过合理地使用注解,可以让代码更简洁、可读性更高,同时提高开发效率。

相关文章
|
21天前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
21天前
|
缓存 Java 数据库
【Java面试题汇总】Spring篇(2023版)
IoC、DI、aop、事务、为什么不建议@Transactional、事务传播级别、@Autowired和@Resource注解的区别、BeanFactory和FactoryBean的区别、Bean的作用域,以及默认的作用域、Bean的生命周期、循环依赖、三级缓存、
【Java面试题汇总】Spring篇(2023版)
|
1天前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
8 2
|
12天前
|
人工智能 开发框架 Java
重磅发布!AI 驱动的 Java 开发框架:Spring AI Alibaba
随着生成式 AI 的快速发展,基于 AI 开发框架构建 AI 应用的诉求迅速增长,涌现出了包括 LangChain、LlamaIndex 等开发框架,但大部分框架只提供了 Python 语言的实现。但这些开发框架对于国内习惯了 Spring 开发范式的 Java 开发者而言,并非十分友好和丝滑。因此,我们基于 Spring AI 发布并快速演进 Spring AI Alibaba,通过提供一种方便的 API 抽象,帮助 Java 开发者简化 AI 应用的开发。同时,提供了完整的开源配套,包括可观测、网关、消息队列、配置中心等。
557 7
|
9天前
|
Java Spring 容器
Spring使用异步注解@Async正确姿势
Spring使用异步注解@Async正确姿势,异步任务,spring boot
|
9天前
|
Java 编译器 程序员
Java注解,元注解,自定义注解的使用
本文讲解了Java中注解的概念和作用,包括基本注解的用法(@Override, @Deprecated, @SuppressWarnings, @SafeVarargs, @FunctionalInterface),Java提供的元注解(@Retention, @Target, @Documented, @Inherited),以及如何自定义注解并通过反射获取注解信息。
Java注解,元注解,自定义注解的使用
|
9天前
|
XML Java 数据格式
spring复习03,注解配置管理bean
Spring框架中使用注解配置管理bean的方法,包括常用注解的标识组件、扫描组件、基于注解的自动装配以及使用注解后的注意事项,并提供了一个基于注解自动装配的完整示例。
spring复习03,注解配置管理bean
|
9天前
|
XML 前端开发 Java
控制spring框架注解介绍
控制spring框架注解介绍
|
22天前
|
Java 数据库连接 API
【Java笔记+踩坑】Spring Data JPA
从常用注解、实体类和各层编写方法入手,详细介绍JPA框架在增删改查等方面的基本用法,以及填充用户名日期、分页查询等高级用法。
【Java笔记+踩坑】Spring Data JPA
|
22天前
|
Java 数据库连接 数据格式
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
IOC/DI配置管理DruidDataSource和properties、核心容器的创建、获取bean的方式、spring注解开发、注解开发管理第三方bean、Spring整合Mybatis和Junit
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
下一篇
无影云桌面