常用注解整理(边学习边整理、超详细)
1、@SpringBootApplication:
标识一个类是SpringBoot应用的主类,自动扫描组件并完成自动配置,是SpringBoot应用的入口。
它是一个组合注解,包含三个注解:
- @SpringBootConfiguration:标识一个类是springBoot应用的配置类,用于定义配置信息,Bean的创建和组装等。
- @EnableAutoConfiguration:用于启动SpringBoot自动配置机制,SpringBoot根据项目的依赖和配置,自动推断并配置应用程序,他会根据类路径上的Jar包、类路径下的属性文件以及其他配置方式来自动配置Spring应用。极大的简化了应用程序的配置过程,减少了手动配置的工作量。(这个注解把Spring应用所需的Bean注入到容器中)
- @ComponentScan:用于指定需要扫描的包及其子包,并将其注册到Spring容器中,自动装配标注有特定注解的组件(如:@Component、@Service、@Repository),被扫描到的组件会根据其注解类型自动注册为相应的Bean,并可在其他组件中通过依赖注入的方式使用(@Autowired或@Inject)。
需注意一下几点:
@ComponentScan
注解可以指定多个包路径,使用数组方式或逗号分割- 默认情况下,
@ComponentScan
会扫描配置类所在包及其子包下的组件,也可以通过BasePackages
属性指定扫描的包路径。 - 可以通过
IncludeFilters
和excludeFilters
属性来控制组件的过滤规则,只选择需要扫描的特定组件。
2、@Configuration
标识一个类为配置类,用于定义配置信息、创建Bean以及组装他们。
Bean定义,在配置类中,使用@Bean
注解定义Bean,@Bean
注解告诉Spring容器将方法的返回值注册为一个Bean。并注入到容器中管理。
依赖注入,配置类中的Bean可以通过构造参数注入、方法参数注入、@Autowired
注解进行依赖注入,实现Bean之间的协作和交互。
条件化配置,配置类中的方法可以使用条件注解(如@Conditional
、@ConditionalOnProperty
等)来进行条件化配置。
3、@RestController
标识一个类是RESTFUl风格的控制器,是一个复合注解,由:@ResponseBody
和@Controller
组成
==@ResponseBody:==将方法的返回结果直接写入到 HTTP response body
中,进而将数据返回给客户端,不会被解析为跳转路径
当方法上没有写@ResponseBody
时,底层会将方法的返回值封装为ModelAndView
对象
如果返回值是一个字符串,直接将字符串返回给客户端;如果是一个Java对象,会将对象转化为json
串,然后返回。
==@Controller:==标识该类为控制器类,分发处理器会扫描使用该注解的类的方法,并检测该方法是否使用了@RequestMapping注解
4、@RequestMapping
是一个用来处理请求地址映射的注解,可以用于映射一个请求或一个方法,可以用在类上或方法上。
用于类上:表示类中的所有响应请求的方法都是以该地址作为父路径
==用于方法上:==表示在类的父路径下追加方法上注解中的地址将会访问到该方法
常用属性:value
、method
、params
5、@RequestBody
@RequestBody可以与@RequestParam结合使用,参数前使用了@RequestParam,前端必须传这个参数值,否则请求出错。
@RequestBody 接收的是请求体里面的数据,一般用于处理非 Content-Type: application/x-www-form-urlencoded
编码格式的数据,比如:application/json
、application/xml
等类型的数据;
@RequestParam接收的是请求头里的数据。
- 请求体绑定:@RequestBody注解用于将请求的内容(通常是JSON或XML格式的数据)绑定到方法的参数上。它告诉Spring MVC框架将请求体的内容解析并转换为指定的参数类型。
- 对象转换:当请求体的内容与方法参数的类型匹配时,@RequestBody注解将自动进行对象转换。例如,如果请求的内容是JSON格式的数据,并且方法参数类型是Java对象,Spring MVC自动将JSON数据转换为Java对象。
6、@Component
用于标识一个类为组件,它是其他特定功能注解的基础注解
作用:1、标识组件
2、自动扫描,Spring框架会自动扫描该类并将其注册为一个Bean(组件)
3、依赖注入,被标注为组件的类可以通过依赖注入方式获取其他组件的实例,完成相应的业务逻辑
7、@Service
表示一个类是服务层(Service),用于定义业务逻辑的处理
8、@Repository
用于表示一个类为数据访问层(Repository),表示该类是负责与数据库或其他数据源交互的组件
这个注解修饰的DAO或者repositories类会被ComponetScan发现并配置,同时也不需要为它们提供XML配置项
9、@Autowired
@Autowired
注解由Spring提供,只按照byType
注入,不是去匹配name
,如果只根据type无法辨别注入对象时,就需要配合@Qualifier
注解或者@Primary
注解使用
10、@Resource
@Resource
是J2EE本身提供的,默认按照名称进行装配,名称也可以通过name
进行指定,如果没有指定name
属性或者type
属性,就会通过反射机制使用byName
自动注入策略。按名称进行查找时,当找不到与名称匹配的bean时,才按照类型进行装配,需要注意的是,一旦指定name
属性,就只会按照名称进行装配。
11、@Data
注解在类上,提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法
12、@Log4j2
注解在类上;为类提供一个 属性名为log 的 log4j 日志对象,和@Log4j注解类似
13、@Transactional
未整理完,待续…
Spring框架中的注解,用于声明事物的范围和行为,可以用在类级别上或方法上,用于标识希望开启事物的方法或类。