springboot常用注解汇总

news/2025/2/12 17:58:44/

一. 控制器相关注解

@RestController:
表示该类是一个 RESTful Web 服务的控制器,将返回值转换成 JSON 格式并响应给客户端

@RequestMapping:
映射请求的 URL 地址和方法,用在类或方法上,可以设置 URL 地址、请求方法、请求参数等

@RequestParam:
获取请求参数的值。用在方法的参数上,可以设置参数名称、是否必须、默认值等

@PathVariable:
获取 URL 中的占位符参数,用在方法的参数上,可以设置参数名称、是否必须、默认值等

@RestController
@RequestMapping("/api")
public class UserController {@Autowiredprivate UserService userService;@GetMapping("/users")public List<User> getUsers() {return userService.getAllUsers();}@GetMapping("/users/{id}")public User getUserById(@PathVariable Long id) {return userService.getUserById(id);}@PostMapping("/users")public ResponseEntity<?> createUser(@RequestBody User user) {userService.saveUser(user);return new ResponseEntity<>(HttpStatus.CREATED);}@PutMapping("/users/{id}")public ResponseEntity<?> updateUser(@PathVariable Long id, @RequestBody User user) {User existingUser = userService.getUserById(id);if (existingUser != null) {userService.updateUser(user);return new ResponseEntity<>(HttpStatus.OK);} else {return new ResponseEntity<>(HttpStatus.NOT_FOUND);}}@DeleteMapping("/users/{id}")public ResponseEntity<?> deleteUser(@PathVariable Long id) {User existingUser = userService.getUserById(id);if (existingUser != null) {userService.deleteUser(id);return new ResponseEntity<>(HttpStatus.NO_CONTENT);} else {return new ResponseEntity<>(HttpStatus.NOT_FOUND);}}
}

代码中使用@RestController注解,表明这是一个RESTful Web服务。@RequestMapping注解指定了基础URL路径,用于处理HTTP请求。使用了依赖注入(@Autowired)来获取UserService,用来处理User实体的业务逻辑。在类中,定义了一些处理HTTP请求的方法:GET、POST、PUT和DELETE。

类中使用了不同的注解来指定它们的HTTP路径和HTTP方法,@GetMapping注解指定了用于处理HTTP GET请求的路径,@PostMapping指定了用于处理HTTP POST请求的路径,还使用了一些Spring MVC特定的注释,如@PathVariable和@RequestBody,用于获取请求参数或请求体的值。它们也使用了ResponseEntity类来封装HTTP响应,以及HttpStatus枚举来表示HTTP状态码。

二. 自动装配相关注解

@Autowired:
自动装配一个 Bean 对象,用在字段、方法、构造器上,可以设置是否必须、Bean 的名称等

@Value:
获取配置文件中的属性值,用在字段、方法、构造器上,可以设置属性名称、默认值等

@Component
public class AdminComponent {@Autowiredprivate AdminService adminService;@Value("${system.config}")private String sysConfig;public void getCongfig() {System.out.println("system config is " + sysConfig);}
}

三. 组件相关注解
@Component:
表示一个组件类,会被自动扫描并加载到 Spring 上下文中

@Service:
表示一个业务服务类,会被自动扫描并加载到 Spring 上下文中

@Repository:
表示一个数据访问类,会被自动扫描并加载到 Spring 上下文中

@Repository
public class UserRepositoryImpl implements UserRepository {@Autowiredprivate SessionFactory sessionFactory;@Overridepublic User findById(Long id) {Session session = sessionFactory.getCurrentSession();return session.get(User.class, id);}@Overridepublic void save(User user) {Session session = sessionFactory.getCurrentSession();session.save(user);}@Overridepublic void delete(User user) {Session session = sessionFactory.getCurrentSession();session.delete(user);}@Overridepublic List<User> findAll() {Session session = sessionFactory.getCurrentSession();CriteriaQuery<User> criteriaQuery = session.getCriteriaBuilder().createQuery(User.class);criteriaQuery.from(User.class);return session.createQuery(criteriaQuery).getResultList();}
}

四. 配置相关注解
@Configuration:
表示一个配置类,会被自动扫描并加载到 Spring 上下文中,可以使用 @Bean 注解来定义一个 Bean 对象

@EnableAutoConfiguration:
用来开启自动配置,会自动配置 Spring 上下文中的各种 Bean 对象

@EnableAutoConfiguration
public class MyApplication {//...
}

@Conditional:
用来条件化地加载 Bean 对象,可以根据某些条件来决定是否加载

@Configuration
public class SysConfig {@Bean@Conditional(SysCondition.class)public SysBean sysBean() {return new SysBean();}
}public class SysCondition implements Condition {public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {return true; //返回 true 表示需要加载 SysBean 对象}
}

五. 组合注解
@SpringBootApplication:包括了 @Configuration、@EnableAutoConfiguration 和 @ComponentScan。

@Configuration:表示该类是一个配置类,可以使用 @Bean 注解来定义一个 Bean 对象

@EnableAutoConfiguration:用来开启自动配置,会自动配置 Spring 上下文中的各种 Bean 对象

@ComponentScan:用来自动扫描并加载符合条件的组件类,如果不设置扫描路径,默认扫描该注解所在类的包及其子包

@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

http://www.ppmy.cn/news/67284.html

相关文章

离散对数介绍

前置知识 欧拉函数 ϕ ( n ) \phi(n) ϕ(n) 欧拉函数简介 阶 若 g g g和 n n n互质&#xff0c;则令 g x % n 1 g^x\%n1 gx%n1的最小正整数 x x x称为 g g g模 n n n的阶。 原根 对于互质的两个正整数 g g g和 n n n&#xff0c;如果 g g g模 n n n的阶为 ϕ ( n ) \phi…

《c++ primer笔记》第十四章 重载运算与类型转换

文章目录 一、基本概念二、输入和输出运算符2.1重载输出运算符<<2.2重载输入运算符>> 三、算术和关系运算符四、赋值运算符五、下标运算符六、递增和递减运算符七、成员访问运算符八、函数调用运算符8.1lamba函数对象8.2标准库定义的函数对象8.3可调用对象与functi…

安装nvm,解决访问raw.githubusercontent.com出现refused拒绝连接错误

具体的错误信息如下&#xff1a; curl: (7) Failed to connect to raw.githubusercontent.com port 443: 拒绝连接 查询了一下发现是dns污染的问题&#xff0c;设置直连 vi /etc/hosts ###增加下面的解析 199.232.68.133 raw.githubusercontent.com 199.232.68.133 user-ima…

android使用MediaPlayer播放raw目录下的mp3

使用android自带的 MediaPlayer 播放 mp3 时&#xff0c;需要注意的几个点&#xff1a; 1. 使用&#xff1a; ——>初始化&#xff1a; MediaPlayer mediaPlayer MediaPlayer.create(this, R.raw.example_song); ——>播放: mediaPlayer.start(); ——>释放&am…

跑在笔记本里的大语言模型 - GPT4All

何为GPT4All GPT4All 官网给自己的定义是&#xff1a;一款免费使用、本地运行、隐私感知的聊天机器人&#xff0c;无需GPU或互联网。 从官网可以得知其主要特点是&#xff1a; 本地运行&#xff08;可包装成自主知识产权&#x1f436;&#xff09;无需GPU&#xff08;穷人适配…

KubeKey

KubeKey 是一个开源的 Kubernetes 集群自动化部署工具&#xff0c;它可以帮助用户快速、可靠地部署 Kubernetes 集群。KubeKey 支持多种部署场景&#xff0c;包括单节点、多节点、高可用、离线等。可以在 Linux、macOS 和 Windows 等操作系统上使用。 KubeKey 的主要特点包括&…

SoringBoot——pom文件:starter

先来看一看&#xff1a; 这次我们来介绍SpringBoot的pom文件的另一个好玩的地方&#xff1a;starter。 starter的中文含义是启动器&#xff0c;所以有时候我们在Maven仓库找依赖的时候&#xff0c;如果开启了自动翻译就会经常会看见一个奇怪的词叫做某某弹簧启动器&#xff0…

支付系统设计二:统一开发框架

文章目录 前言一、项目分层二、模块职责简介1. API层2. Service层2.1 操作执行服务2.2 操作器2.3 操作执行器2.4 参数校验2.5 操作器实现 3. Domain层4. Infrastructure层4.1 Dal层 三、对应类图四、开发内容3.1 约定请求报文格式3.2 新增交易码与操作器映射枚举类3.3 配置参数…