企业级Javaweb开发常用注解
1. Spring 框架核心注解
@SpringBootApplication
启动 Spring Boot 应用程序,结合了 @Configuration
、@EnableAutoConfiguration
和 @ComponentScan
。
@SpringBootApplication
public class Sm3Application {public static void main(String[] args) {SpringApplication.run(Sm3Application.class, args);}
}
-
@Component
定义一个 Spring 管理的 Bean,Spring 会自动扫描并注册该类为 Bean。
-
@Controller
标识一个控制器类,通常用于 Web 应用中的处理请求。
-
@Service
标识一个服务类,Spring 会将其自动注册为 Bean,通常用于业务逻辑层。
-
@Repository
标识一个数据访问类,Spring 会将其自动注册为 Bean,并对数据库操作异常进行翻译。
-
@RestController
用于创建 RESTful Web 服务,@Controller
和 @ResponseBody
的组合。
-
@Configuration
表明该类为配置类,通常用于定义 Bean。
-
@Bean
用于方法上,表示该方法返回的对象会被 Spring 容器管理。
-
@ComponentScan
用于启用 Spring 的组件扫描机制,扫描指定包下的类。
-
@EnableAutoConfiguration
启用 Spring Boot 的自动配置功能。
-
@Value
从配置文件中注入值。
2. 依赖注入相关注解
-
@Autowired
自动注入 Bean,支持按类型自动注入。
-
@Qualifier
配合 @Autowired
使用,指定具体要注入的 Bean。
-
@Inject
JSR-330 标准注解,与 @Autowired
功能相同。
-
@Primary
当有多个 Bean 满足自动注入条件时,指定优先注入哪个 Bean。
-
@Lazy
延迟注入,当 Bean 被第一次使用时才初始化。
3. Web 相关注解
-
@RequestMapping
用于处理 HTTP 请求,支持指定请求路径、方法类型等。
-
@GetMapping
用于处理 GET 请求,简化 @RequestMapping(method = RequestMethod.GET)
的写法。
-
@PostMapping
用于处理 POST 请求,简化 @RequestMapping(method = RequestMethod.POST)
的写法。
-
@PutMapping
用于处理 PUT 请求,简化 @RequestMapping(method = RequestMethod.PUT)
的写法。
-
@DeleteMapping
用于处理 DELETE 请求,简化 @RequestMapping(method = RequestMethod.DELETE)
的写法。
-
@PathVariable
从 URL 中提取变量。
-
@RequestParam
提取查询参数。
-
@RequestBody
获取请求体中的数据。
-
@ResponseBody
将方法返回值直接作为响应体。
-
@SessionAttributes
用于将模型中的数据存储到 HTTP 会话中。
4. 事务相关注解
-
@Transactional
声明事务管理,确保方法执行的原子性。
-
@EnableTransactionManagement
启用事务管理。
5. AOP(面向切面编程)相关注解
-
@Aspect
标记一个类为切面类。
-
@Before
在目标方法执行之前执行。
-
@After
在目标方法执行之后执行。
-
@AfterReturning
在目标方法正常执行后执行。
-
@AfterThrowing
在目标方法抛出异常时执行。
-
@Around
环绕通知,在目标方法执行前后都可以执行。
6. 缓存相关注解
-
@EnableCaching
启用缓存功能。
-
@Cacheable
标记方法的返回值可以被缓存。
-
@CachePut
更新缓存。
-
@CacheEvict
清除缓存。
7. 定时任务相关注解
-
@EnableScheduling
启用定时任务功能。
-
@Scheduled
定义定时任务,指定方法的执行间隔时间。
8. 安全相关注解
-
@PreAuthorize
指定方法执行前需要的权限。
-
@Secured
指定方法执行所需的角色。
-
@RolesAllowed
限制方法只能由特定角色访问。
9. 其他常见注解
-
@Profile
根据 Spring 配置的环境来激活或禁用 Bean。
-
@PropertySource
导入属性文件,用于配置文件的加载。
-
@InitBinder
用于自定义数据绑定,通常用于表单提交数据的转换。
-
@Valid
用于进行验证,常见于 Web 层的表单验证。
-
@PostConstruct
在 Bean 初始化后执行的方法。
-
@PreDestroy
在 Bean 销毁前执行的方法。
2. MyBatis 相关注解
-
@Mapper
标识一个接口为 MyBatis 的 Mapper。
-
@TableName
指定实体类对应的数据库表名。
-
@TableId
标识实体类的主键字段。
-
@TableField
指定实体类字段与数据库字段的映射关系。
-
@Select
执行查询操作。
-
@Insert
执行插入操作。
-
@Update
执行更新操作。
-
@Delete
执行删除操作。
3. JUnit 相关注解
-
@Test
标记一个方法为测试方法。
-
@Before
在每个测试方法执行之前运行的方法。
-
@After
在每个测试方法执行之后运行的方法。
-
@BeforeClass
在所有测试方法之前运行一次。
-
@AfterClass
在所有测试方法之后运行一次。
-
@Ignore
忽略某个测试方法。
-
@RunWith
指定测试运行器。
-
@ParameterizedTest
参数化测试,用不同的参数多次运行同一方法。
-
@ValueSource
提供参数源给参数化测试。
4. 其他常见注解
-
@Entity
标记一个类为 JPA 实体类。
-
@Id
标记实体类的主键字段。
-
@GeneratedValue
配置主键生成策略。
-
@OneToMany
配置一对多关系。
-
@ManyToOne
配置多对一关系。
-
@ManyToMany
配置多对多关系。
-
@OneToOne
配置一对一关系。
-
@Column
映射实体类的字段与数据库列。
-
@Lob
标识字段为大对象类型(例如:BLOB 或 CLOB)。
-
@Transient
标记该字段不被持久化。
-
@JsonIgnore
让 Jackson 忽略该字段,不进行 JSON 序列化。
-
@JsonProperty
改变 JSON 字段名称。
-
@JsonInclude
控制 JSON 序列化时是否包含该字段。
-
@NotNull
标注该字段不能为空。
-
@NotEmpty
标注该字段不能为空并且不能为空字符串。
-
@Size
限制字段的大小范围。
-
@Pattern
限制字段值的正则匹配。
-
@AssertTrue
断言字段值必须为 true。
-
@AssertFalse
断言字段值必须为 false。
-
@Email
验证字段是否为有效的电子邮件地址。
-
@Range
限制字段的数值范围。
-
@Valid
用于嵌套验证。
-
@Override
标明该方法覆盖了父类方法。
-
@FunctionalInterface
标明一个接口是函数式接口。
-
@SafeVarargs
标明可变参数方法是类型安全的。