Spring常用注解的记录

Spring MVC 数据处理
本文深入探讨了Spring MVC框架中如何高效处理前端数据,包括不同类型的输入解析,如表单数据、URL参数及JSON数据。详细讲解了@RequestBody、@RequestParam和@ModelAttribute注解的使用场景与最佳实践,帮助开发者理解数据绑定机制,提升代码严谨性和性能。

在Controller层中,要注意观察前端传入的是什么值,表单数据,粘贴在链接后面得参数,还是JSON格式的数据,在此层中直接指定对应的解析器,而不是完全交给Spring MVC来做处理,这样可以减少一些不必要的解析成本,避免数据转换过程中出现异常,这样可以做好更好的数据校验,代码也更严谨。

@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。

@RequestParam是传递参数的.
@RequestParam用于将请求参数区数据映射到功能处理方法的参数上。

@ModelAttribute
在控制器的处理器方法参数上添加 @ModelAttribute 注释可以访问模型中的属性,如果不存在这个模型,则会自动将其实例化,产生一个新的模型。 模型属性还覆盖了来自 HTTP Servlet 请求参数的名称与字段名称匹配的值,也就是请求参数如果和模型类中的域变量一致,则会自动将这些请求参数绑定到这个模型对象,这被称为数据绑定,从而避免了解析和转换每个请求参数和表单字段这样的代码。

 

参考文章

https://blog.youkuaiyun.com/justry_deng/article/details/80972817

### 三级标题:Spring框架中常用注解及其用途 在 Spring 框架中,注解(Annotation)用于简化配置,提升开发效率,并使代码更具可读性和可维护性。Spring 提供了多种常用注解,主要分为以下几类:核心功能注解、事务管理注解、Web开发注解、AOP注解等[^2]。 #### 核心功能注解 - `@Component`:通用注解,标记一个类为Spring管理的组件,适用于任何需要被Spring容器管理的类(如工具类、辅助类)[^3]。 ```java @Component public class MyComponent { // ... } ``` - `@Autowired`:用于自动装配依赖对象,通常用于字段、构造方法或方法上,Spring会自动将匹配的Bean注入到目标对象中。 - `@Qualifier`:当有多个相同类型的Bean时,配合`@Autowired`使用,指定具体要注入的Bean[^4]。 ```java @Autowired @Qualifier("specificBeanName") private MyComponent myComponent; ``` - `@Service`:标记一个类为服务层组件,通常用于业务逻辑处理类上。 - `@Repository`:标记一个类为数据访问层组件,通常用于数据库操作类上,并且可以将数据访问异常转换为Spring的统一异常体系。 #### 事务管理注解 - `@Transactional`:用于声明事务性操作,可以标注在类或方法上,表示该类或方法中的操作应在事务环境中执行。 ```java @Transactional public void transferMoney(Account from, Account to, double amount) { // 事务操作 } ``` #### Web开发注解 - `@Controller`:标记一个类为Spring MVC的控制器,通常用于Web层处理HTTP请求的类上。 - `@RestController`:结合`@Controller`和`@ResponseBody`,用于构建RESTful Web服务,返回值直接写入HTTP响应体中。 - `@RequestMapping`:用于映射HTTP请求到特定的类或方法上,支持多种HTTP方法(GET、POST等)。 ```java @RequestMapping("/hello") public String sayHello() { return "Hello"; } ``` - `@GetMapping` 和 `@PostMapping`:分别用于映射HTTP GET和POST请求到方法上,是`@RequestMapping`的快捷方式[^2]。 #### AOP注解 - `@Aspect`:标记一个类为切面类,用于定义横切关注点(如日志记录、事务管理等)。 - `@Pointcut`:定义切点,指定哪些方法需要被拦截。 ```java @Pointcut("execution(* com.example.service.*.*(..))") public void serviceLayer() {} ``` - `@Before`、`@After`、`@Around`:分别定义前置通知、后置通知和环绕通知,用于在目标方法执行前后执行特定逻辑[^2]。 ```java @Before("serviceLayer()") public void beforeAdvice(JoinPoint joinPoint) { System.out.println("Before method: " + joinPoint.getSignature().getName()); } ``` #### 其他常用注解 - `@Configuration`:标记一个类为配置类,相当于XML配置文件的作用,通常与`@Bean`一起使用[^2]。 - `@Bean`:用于在配置类中定义Bean,方法的返回值将被注册为Spring应用上下文中的Bean。 ```java @Configuration public class AppConfig { @Bean public MyComponent myComponent() { return new MyComponent(); } } ``` - `@Scope`:用于定义Bean的作用域,例如`singleton`、`prototype`等。 ```java @Component @Scope("prototype") public class MyPrototypeBean { // ... } ``` - `@Value`:用于注入属性值,可以从配置文件中读取值并赋给字段或方法参数。 ```java @Value("${app.name}") private String appName; ``` #### 无beans.xml文件配置的注解 - `@ComponentScan`:启用组件扫描,自动扫描并注册Bean,通常与`@Configuration`一起使用[^1]。 ```java @Configuration @ComponentScan("com.example") public class AppConfig { // ... } ``` - `@Import`:用于导入其他配置类,实现配置类之间的组合。 ```java @Configuration @Import(DatabaseConfig.class) public class AppConfig { // ... } ``` - `@PropertySource`:用于加载外部属性文件,通常与`@Value`一起使用,从属性文件中注入值。 ```java @Configuration @PropertySource("classpath:app.properties") public class AppConfig { @Value("${app.name}") private String appName; } ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值