springboot常用注解整理
Springboot常用注解整理
通用
1.@Autowired
作用:自动注入 Spring 容器中的 bean。
用途:可以用于构造函数、字段或 setter 方法,简化依赖注入的过程。
1 |
|
2. @Component
作用:将类标识为 Spring 组件,使其可以被 Spring 管理。
用途:用于任何 Spring 管理的类,如果不适用更特定的注解(如 @Service
、@Controller
、@Repository
),可以使用这个注解。
是一个类级别的注解,通常用于标记一个类作为 Spring 管理的组件。Spring 会自动扫描带有 @Component
注解的类,并将其实例化为 bean。
更常用于自动扫描的组件,适合用于标记服务层、控制器层、数据访问层等。可以与其他注解(如 @Service
、@Controller
、@Repository
)结合使用,以便在语义上更清晰。
1 |
|
3.@Value
作用:用于注入配置属性。
用途:从 application.properties
或 application.yml
中获取值并注入到字段中。
1 |
|
4.@Configuration
作用:标识一个类为配置类,通常用于定义 Spring bean。
用途:替代 XML 配置,使用 Java 代码来配置 bean。
1 |
|
5.@Bean
作用:用于定义一个 bean 方法。
用途:在 @Configuration
类中使用,返回的对象将被 Spring 容器管理。
是一个方法级别的注解,通常用于在配置类中定义一个 bean。返回值将被注册为 Spring 的 bean。
更常用于手动定义 bean,适合在需要更复杂配置或控制 bean 实例化过程时使用。可以在 Java 配置类中使用,也可以通过工厂方法创建 bean。
1 |
|
6.@Scope
作用:指定 bean 的作用域。
用途:可以设置为单例(singleton)、原型(prototype)、请求(request)、会话(session)等。
1 |
|
7.@PostConstruct
作用:在 bean 初始化完成后执行的方法。
用途:用于进行一些初始化操作。
1 |
|
8.@PreDestroy
作用:在 bean 销毁之前执行的方法。
用途:用于释放资源或进行清理操作。
1 |
|
Controller层
1. @Controller
作用:标识一个类为控制器,用于处理请求。
用途:通常与视图(如 JSP、Thymeleaf)结合使用。
通常返回视图名(如 JSP 页面),需要通过视图解析器来渲染视图。如果需要返回 JSON 或其他数据格式,必须在每个处理方法上添加 @ResponseBody
。
1 |
|
2. @RestController
作用:是 @Controller
的组合注解,默认返回 JSON 或 XML 格式的数据。
用途:适用于 RESTful Web 服务。
默认将方法的返回值直接作为 HTTP 响应体返回,通常用于返回 JSON 或 XML 数据。所有方法返回的对象会自动被转换为 JSON 格式(如果使用了 Jackson 等库)。
1 |
|
3.@RequestMapping
作用:用于将 HTTP 请求映射到处理方法。
用途:可以在类级别或方法级别使用,支持设置请求类型(GET、POST 等)、路径、参数等。
1 |
|
4. @GetMapping, @PostMapping, @PutMapping, @DeleteMapping
作用:是 @RequestMapping
的快捷方式,分别用于处理 GET、POST、PUT 和 DELETE 请求。
用途:使代码更简洁明了。
1 |
|
5.@PathVariable
作用:用于从 URL 模板中提取变量。
用途:通常用于 RESTful API 中,允许将 URL 中的动态部分映射到方法参数。
1 |
|
6.@RequestParam
作用:用于提取请求参数。
用途:可以从查询字符串或表单数据中获取参数。
1 |
|
7.@RequestBody
作用:用于将请求体中的 JSON 或 XML 数据转换为 Java 对象。
用途:在处理 POST 和 PUT 请求时,常用于接收客户端发送的数据。
1 |
|
8.@ResponseBody
作用:指示方法的返回值应直接写入 HTTP 响应体。
用途:通常与 @Controller
结合使用,以便返回 JSON 或其他数据格式。
1 |
|
9.@CrossOrigin
作用:用于处理跨源请求。
用途:允许特定来源的客户端访问控制器的方法,适用于 RESTful API。
1 |
|
10. @Valid 和 @Validated
作用:用于启用方法参数的验证。
用途:常与 @RequestBody
一起使用,确保传入的数据符合要求。
1 |
|
Service层
1.@Service
作用:标识一个类为服务组件,是 Spring 的标记注解之一。
用途:用于标识业务逻辑层的组件,Spring 会自动扫描并管理这些类。
1 | import org.springframework.stereotype.Service; |
2.@Transactional
作用:用于标记一个方法或类为事务性,确保在执行方法时的一致性。
用途:在处理数据库操作时,通常会将这个注解应用于 Service 层,以确保操作的原子性和一致性。
1 | import org.springframework.transaction.annotation.Transactional; |
3.@Cacheable, @CachePut, @CacheEvict
作用:用于缓存管理。
@Cacheable
:用于标记方法的结果应被缓存。@CachePut
:用于更新缓存。@CacheEvict
:用于清除缓存。
用途:通过缓存提高系统性能,减少数据库查询。
1 | import org.springframework.cache.annotation.Cacheable; |
4.@Profile
作用:用于根据当前环境激活特定的 Bean。
用途:可以在开发、测试和生产环境中使用不同的实现类。
1 | import org.springframework.context.annotation.Profile; |
Mapper层
1.@Repository
作用:标识一个类为数据访问层组件。
用途:通常与 Spring Data JPA 和 MyBatis 一起使用,用于表示该类是用于数据操作的组件。
属于 Spring 框架,用于标识一个类为数据访问层的组件。主要用于 Spring 的依赖注入和 AOP(面向切面编程)。
用于标记数据访问层的类,通常与 Spring Data JPA 或其他数据访问技术一起使用。可以通过 @Autowired
注入到服务层,支持 Spring 的事务管理。
1 | import org.springframework.stereotype.Repository; |
2.@Mapper
作用:标识一个接口为 MyBatis 的 Mapper 接口。
用途:将该接口与 XML 映射文件或注解 SQL 语句关联,允许 MyBatis 自动扫描并生成实现类。
属于 MyBatis 框架,用于标识一个接口为 MyBatis 的 Mapper 接口。主要用于将 SQL 操作与 Java 方法进行映射。
用于标识 MyBatis 的 Mapper 接口,使得 MyBatis 能够自动生成实现类。可以直接定义 SQL 操作,并与数据库表进行映射。
1 | import org.apache.ibatis.annotations.Mapper; |
3.@Select, @Insert, @Update, @Delete
作用:这些注解用于定义 SQL 操作。
用途:可以直接在 Mapper 接口中编写 SQL 语句,而不需要 XML 映射文件。
@Select:执行 SELECT 查询。
1
2
User findById(Long id);@Insert:执行 INSERT 操作。
1
2
void insertUser(User user);@Update:执行 UPDATE 操作。
1
2
void updateUser(User user);@Delete:执行 DELETE 操作。
1
2
void deleteUser(Long id);
4.@Param
作用:用于在方法参数中指定参数名。
用途:在使用注解 SQL 语句时,可以通过这个注解来明确指定参数名,尤其在多个参数时。
1 |
|
pojo层
1.@ConfigurationProperties(prefix = “xxx”)
作用:用于批量加载和绑定配置文件中的属性(如 application.yml
或 application.properties
)到一个 Java 类的字段中。
使用方式:
- 在配置类上标注
@ConfigurationProperties
,并指定一个前缀(prefix
)。 - 配合
@EnableConfigurationProperties
或使用@SpringBootApplication
(隐含支持)。 - 自动将配置文件中以指定前缀开头的属性映射到类中的字段。
- 示例:
1 | @Component |
配置文件:
1 | app.name=MyApp |
2.@Value注解
作用:直接注入单个配置属性的值到字段中。
使用方式:
在类中的字段或方法参数上使用 @Value
注解,并通过 ${}
引用配置文件中的属性。
示例:
1 | java复制代码@Value("${app.name}") |
配置文件:
1 | properties |