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

2024-04-29 10:36

本文主要是介绍【JAVA进阶篇教学】第七篇:Spring中常用注解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

目录

一、常用注解 

1.@Component

2.@Autowired

3.@Controller

4.@Service

5.@Repository

6.@RequestMapping

7.@Configuration

8.@Bean

9.@Value

10.@Profile

11.@Qualifier

12.@Transactional

13.@Aspect

14.@ResponseBody

15.@RestController

16.@PathVariable

17.@RequestParam

18.@RequestBody

19.@GetMapping

20.@PostMapping


一、常用注解 

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;@Autowiredpublic 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 {@Beanpublic MyService myService() {return new MyServiceImpl();}
}

8.@Bean

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

@Configuration
public class AppConfig {@Beanpublic 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 {@Beanpublic 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 {@Autowiredprivate MyRepository myRepository;@Transactionalpublic 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")@ResponseBodypublic 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 应用程序。通过合理地使用注解,可以让代码更简洁、可读性更高,同时提高开发效率。

这篇关于【JAVA进阶篇教学】第七篇:Spring中常用注解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/945852

相关文章

云原生:Kubernetes下的Java应用部署实战详解

目录 一、准备工作         1.1 Docker 及 Kubenetes 安装         1.2 Java应用准备 二、构建 Docker 镜像          2.1 本地Docker Registry搭建         2.2 推送镜像到本地Docker Registry        三、使用 kubenetes 部署 四、Kubenet

奥枫软件Java要个16K遇到地狱级难度,醉了。。。

我只能说地狱难度,没绝对把握就别去了。我凭借前辈的经验,和当时天时地利人和,六道题答得很不错,但还是没通过。我有备而来都没过,现场写那些应该都是白忙活了。 一面 1,分割一个整数。如123,结果[1,2,3]2、一句英语中最长的单词,不能用split3、合并两个有序数组,要求复杂度m+n4、三表SQL题用户表,id,name订单表,id,订单金额表,id,金额要求不能用三表联查,要用嵌套子

JAVA:Spring Boot整合MyBatis Plus持久层

1、简述 MyBatis Plus是MyBatis的增强工具包,它在MyBatis的基础上进行了扩展,提供了许多便捷的功能,例如通用CRUD操作、分页插件、代码生成器等。使用MyBatis Plus,开发者可以更加方便地进行持久层操作,并且减少了很多重复劳动。 官网地址:https://baomidou.com/ 2、环境准备 在开始整合之前,我们需要准备好以下环境: JDK 1.8

Java实现抢红包算法——详细注释,标准语法

package learn;import java.math.BigDecimal;import java.util.ArrayList;import java.util.List;import java.util.Random;public class RobRedPacket {// 发红包算法,金额参数以分为单位public static List<Integer> divideRed

Java中的反射(Reflection)详解

一、技术难点 Java反射是Java语言提供的一种强大的工具,它允许程序在运行时对任意类进行加载、查看、修改类的内部属性和方法。然而,反射也带来了一些技术上的难点: 性能开销:反射涉及到了动态类型解析和字节码操作,这些操作相对于直接访问类成员会有较大的性能开销。因此,在性能敏感的场景下,需要谨慎使用反射。 安全性问题:反射允许程序访问类的私有成员,这可能会破坏封装性,导致数据暴露给不安

springboot小结1

什么是springboot ​ Spring Boot是为了简化Spring应用的创建、运行、调试、部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置。 ​ 简单来说,它提供了一堆依赖打包Starter,并已经按照使用习惯解决了依赖问题—习惯大于约定。Spring Boot默认使用tomcat作为服务器,使用logback提供日志记录。无需多言,直接进入节奏

解锁无限可能:JavaScript与【机器学习】的浪漫邂逅

解锁无限可能:JavaScript与机器学习的浪漫邂逅 在人工智能和大数据日益盛行的今天,机器学习已成为我们理解、分析和处理数据的强大工具。而JavaScript,作为前端开发的主流语言,其灵活的特性和广泛的应用场景也让我们对其充满了期待。那么,当JavaScript与机器学习相遇,又将碰撞出怎样的火花呢?本文将带你走进JavaScript与机器学习的世界,一同探索其基本概念、作用,并通过丰富的

【Spring】深入解析 EnableAutoConfiguration 注解:Spring Boot 自动配置的核心

前言 在 Spring Boot 中,@EnableAutoConfiguration 注解扮演着重要的角色,它是实现自动配置功能的关键。本文将深入探讨 @EnableAutoConfiguration 注解的作用、原理和使用方法,帮助大家更好地理解 Spring Boot 的自动配置机制。 一、@EnableAutoConfiguration 注解的作用 @EnableAutoConfig

【DevOps】Jenkins + Dockerfile自动部署Maven(SpringBoot)项目

环境 docker_host192.168.0.1jenkins_host192.168.0.2 jenkins_host构建完成后把jar发布到docker_host,再通过dockerfile自动构建镜像,运行镜像 1 Jenkins安装 AWS EC2安装Jenkins:AWS EC2 + JDK11 + Jenkins-CSDN博客 AWS EC2上Docker安装Jenki

JVM源码探秘:System.gc全面解析

概述 Java虚拟机(JVM)的垃圾回收(GC)通常由VM自身根据预设条件触发,但开发者也可通过特定手段人为触发,比如使用System.gc()、Runtime.gc()或JMap操作等。本文将深入探讨System.gc()`的底层原理及其背后的故事。 已知知识点回顾 System.gc()执行的是完全GC(Full GC)。它会暂停整个Java进程。通常建议禁用-XX:+DisableEx