注解总结"/>
Java后端开发注解总结
Servlet
@WebServlet:配置该Servlet的访问路径
Filter
@WebFilter:拦截资源的路径
@WebFilter(filterName = “loginCheckFilter”, urlPatterns = “/*”)
Spring
Bean
@Component:管理bean
名称 | @Component(通用) |
---|---|
类型 | 类注解 |
位置 | 类定义上方 |
作用 | 设置该类为spring管理的bean |
属性 | value(默认):定义bean的id |
使用 | @Component @Component(“bookDao”) |
@Controller(表现层)
@Service(业务层)
@Repository(数据层)
@Bean:第三方bean
名称 | @Bean |
---|---|
类型 | 方法注解 |
位置 | 方法定义上方 |
作用 | 设置该方法的返回值作为spring管理的bean |
属性 | value(默认):定义bean的id |
使用 | @Bean |
Bean作用范围
@Scope:是否单例
名称 | @Scope |
---|---|
类型 | 类注解 |
位置 | 类定义上方 |
作用 | 设置该类创建对象的作用范围 可用于设置创建出的bean是否为单例对象 |
属性 | value(默认):定义bean作用范围, 默认值singleton(单例),可选值prototype(非单例) |
使用 | @Scope @Scope(“prototype”) |
Bean生命周期
@PostConstruct:初始化方法
名称 | @PostConstruct |
---|---|
类型 | 方法注解 |
位置 | 方法上 |
作用 | 设置该方法为初始化方法,在构造方法之后执行,替换 init-method |
属性 | 无 |
@PostConstruct |
@PreDestroy:销毁方法
名称 | @PreDestroy |
---|---|
类型 | 方法注解 |
位置 | 方法上 |
作用 | 设置该方法为销毁方法,在销毁方法之前执行,替换 destroy-method |
属性 | 无 |
@PreDestroy |
配置类
@Configuration:主配置类
名称 | @Configuration |
---|---|
类型 | 类注解 |
位置 | 类定义上方 |
作用 | 设置该类为spring配置类 |
属性 | value(默认):定义bean的id |
使用 | @Configuration |
@ComponentScan:配置类扫描
名称 | @ComponentScan |
---|---|
类型 | 类注解 |
位置 | 类定义上方 |
作用 | 设置spring配置类扫描路径,用于加载使用注解格式定义的bean |
属性 | value(默认):扫描路径,此路径可以逐层向下扫描 |
使用 | 在配置类使用 @ComponentScan(“com.ming”) @ComponentScan({com.ming.service",“com.ming.dao”}) |
@PropertySource:扫描配置文件
名称 | @PropertySource |
---|---|
类型 | 类注解 |
位置 | 类定义上方 |
作用 | 加载properties文件中的属性值 |
属性 | value(默认):设置加载的properties文件对应的文件名或文件名组成的数组 |
使用 | 在配置类使用 @PropertySource({“jdbc.properties”,“xxx.properties”}) @PropertySource({“*.properties”}) @PropertySource({“classpath:jdbc.properties”}) |
@Import:引入其他配置类
名称 | @Import |
---|---|
类型 | 类注解 |
位置 | 类定义上方 |
作用 | 导入配置类 |
属性 | value(默认):定义导入的配置类类名 当配置类有多个时使用数组格式一次性导入多个配置类 |
使用 | @Import({JdbcConfig.class}) |
@EnableAspectJAutoProxy:开启AOP
名称 | @EnableAspectJAutoProxy |
---|---|
类型 | 配置类注解 |
位置 | 配置类定义上方 |
作用 | 开启注解格式AOP功能 |
@EnableTransactionManagement:开启事务
名称 | @EnableTransactionManagement |
---|---|
类型 | 配置类注解 |
位置 | 配置类定义上方 |
作用 | 设置当前Spring环境中开启注解式事务支持 |
@EnableWebMvc:开启SpringMVC注解驱动
名称 | @EnableWebMvc |
---|---|
类型 | 配置类注解 |
位置 | SpringMVC配置类定义上方 |
作用 | 开启SpringMVC多项辅助功能 |
属性注入
@Value:注入属性值(配置文件)
名称 | @Value |
---|---|
类型 | 属性注解 或 方法注解(了解) |
位置 | 属性定义上方 或 标准set方法上方 或 类set方法上方 |
作用 | 为基本数据类型 或 字符串类型 属性设置值 |
属性 | value(默认):要注入的属性值 |
使用 | 一般注入配置文件的值:@Value(“${name}”) |
@Autowired:注入引用类
名称 | @Autowired |
---|---|
类型 | 属性注解 或 方法注解(了解) 或 方法形参注解(了解) |
位置 | 属性定义上方 或 标准set方法上方 或 类set方法上方 或 方法形参前面 |
作用 | 为引用类型属性设置值 |
属性 | required:true/false,定义该属性是否允许为null |
使用 | @Autowired |
@Qualifier:注入引用类(指定beanId)
名称 | @Qualifier |
---|---|
类型 | 属性注解 或 方法注解(了解) |
位置 | 属性定义上方 或 标准set方法上方 或 类set方法上方 |
作用 | 为引用类型属性指定注入的beanId |
属性 | value(默认):设置注入的beanId |
使用 | @Qualifier(“bookDao”) |
注意:@Qualifier不能独立使用,必须和@Autowired一起使用
Spring整合junit
@RunWith:设置类运行器
名称 | @RunWith |
---|---|
类型 | 测试类注解 |
位置 | 测试类定义上方 |
作用 | 设置JUnit运行器 |
属性 | value(默认):运行所使用的运行期 |
使用 | @RunWith(SpringJUnit4ClassRunner.class) |
@ContextConfiguration:加载配置类
名称 | @ContextConfiguration |
---|---|
类型 | 测试类注解 |
位置 | 测试类定义上方 |
作用 | 设置JUnit加载的Spring核心配置 |
属性 | classes:核心配置类,可以使用数组的格式设定加载多个配置类 locations:配置文件,可以使用数组的格式设定加载多个配置文件名称 |
@ContextConfiguration(classes = {SpringConfiguration.class}) |
AOP
@Aspect:定义切面类
名称 | @Aspect |
---|---|
类型 | 类注解 |
位置 | 切面类定义上方 |
作用 | 设置当前类为AOP切面类 |
@Pointcut:设置切入点
名称 | @Pointcut |
---|---|
类型 | 方法注解 |
位置 | 切入点方法定义上方 |
作用 | 设置切入点方法 |
属性 | value(默认):切入点表达式 |
@Pointcut(“execution(void com.itheima.dao.BookDao.update())”) |
@Before:前置通知
名称 | @Before |
---|---|
类型 | 方法注解 |
位置 | 通知方法定义上方 |
作用 | 设置当前通知方法与切入点之间的绑定关系,当前通知方法在原始切入点方法前运行 |
@Before(“pt()”):pt为使用了Pointcut的方法名 |
@Around:环绕通知
@After:后置通知
@AfterReturning:返回后通知
@AfterReturning:异常后通知
事务
@Transactional
名称 | @Transactional |
---|---|
类型 | 接口注解 类注解 方法注解 |
位置 | 业务层接口上方 业务层实现类上方 业务方法上方 |
作用 | 为当前业务层方法添加事务(如果设置在类或接口上方则类或接口中所有方法均添加事务) |
@Transactional @Transactional(propagation = Propagation.REQUIRES_NEW):事务传播 |
跨域
三个地方,任何一个地方不相同产生跨域问题
- 访问协议:http https
- 访问地址:192.168.10.10 172.168.10.1
- 端口号:9528 8201
在controller类中添加注解@CrossOrigin解决跨域
Springboot
@SpringBootApplication:springboot引导类
@SpringBootTest:整合junit
@Mapper:管理dao
@ServletComponentScan:扫描某些注解
在SpringBootApplication上使用@ServletComponentScan注解后,Servlet、Filter、Listener可以直接通过@WebServlet、@WebFilter、@WebListener注解自动注册,无需其他代码。
异常处理
@ControllerAdvice:拦截指定的Controller
名称 | @ControllerAdvice |
---|---|
类型 | 类注解 |
位置 | 类上方 |
作用 | 拦截指定的Controller |
使用 | @ControllerAdvice(annotations = {RestController.class, Controller.class}) |
@RestControllerAdvice:用于标识类为REST风格对应的异常处理器
名称 | @RestControllerAdvice |
---|---|
类型 | 类注解 |
位置 | Rest风格开发的控制器增强类定义上方 |
作用 | 为Rest风格开发的控制器类做增强 |
**说明:**此注解自带@ResponseBody注解与@Component注解,具备对应的功能
@ExceptionHandler:异常处理
名称 | @ExceptionHandler |
---|---|
类型 | 方法注解 |
位置 | 专用于异常处理的控制器方法上方 |
作用 | 设置指定异常的处理方案,功能等同于控制器方法, 出现异常后终止原始控制器执行,并转入当前方法执行 |
使用 | @ExceptionHandler(Exception.class) |
**说明:**此类方法可以根据处理的异常不同,制作多个方法分别处理对应的异常
SpringMVC
@RequestMapping:请求访问路径
名称 | @RequestMapping |
---|---|
类型 | 类注解或方法注解 |
位置 | SpringMVC控制器类或方法定义上方 |
作用 | 设置当前控制器方法请求访问路径 |
相关属性 | value(默认),请求访问路径 |
@RequestMapping(“/save”) @RequestMapping(value = “/users/{id}” ,method = RequestMethod.GET) |
@GetMapping:get请求(查询)
@PostMapping:post请求(新增)
@PutMapping:put请求(修改)
@DeleteMapping:delete请求(删除)
@ResponseBody:不解析返回值
名称 | @ResponseBody |
---|---|
类型 | 类注解或方法注解 |
位置 | SpringMVC控制器类或方法定义上方 |
作用 | 设置当前控制器方法响应内容为当前返回值,无需解析 |
相关属性 | pattern:指定日期时间格式字符串 |
@RequestParam:绑定请求参数和形参
名称 | @RequestParam |
---|---|
类型 | 形参注解 |
位置 | SpringMVC控制器方法形参定义前面 |
作用 | 绑定请求参数与处理器方法形参间的关系 |
相关参数 | required:是否为必传参数 defaultValue:参数默认值 |
使用 | (@RequestParam List likes) (@RequestParam(“name”) String userName , int age) |
注意:写上@RequestParam注解框架就不需要自己去解析注入,能提升框架处理性能
@RequestBody:绑定请求参数和形参
名称 | @RequestBody |
---|---|
类型 | 形参注解 |
位置 | SpringMVC控制器方法形参定义前面 |
作用 | 将请求中请求体所包含的数据传递给请求参数,此注解一个处理器方法只能使用一次 |
使用 | (@RequestBody List list) |
@PathVariable:绑定请求参数和形参
名称 | @PathVariable |
---|---|
类型 | 形参注解 |
位置 | SpringMVC控制器方法形参定义前面 |
作用 | 绑定路径参数与处理方法形参间的关系,要求路径参数名与形参名一一对应 |
使用 | (@PathVariable Integer id) |
@RequestBody
、@RequestParam
、@PathVariable
,这三个注解之间的区别和应用分别是什么?
-
区别
- @RequestParam用于接收url地址传参或表单传参 表单和blogs?blogId=1
- @RequestBody用于接收json数据
- @PathVariable用于接收路径参数,使用{参数名称}描述路径参数/blogs/1
-
应用
- 后期开发中,发送请求参数超过1个时,以json格式为主,@RequestBody应用较广
- 如果发送非json格式数据,选用@RequestParam接收请求参数
- 采用RESTful进行开发,当参数数量较少时,例如1个,可以采用@PathVariable接收请求路径变量,通常用于传递id值
@DateTimeFormat:指定Date格式
名称 | @DateTimeFormat |
---|---|
类型 | 形参注解 |
位置 | SpringMVC控制器方法形参前面 |
作用 | 设定日期时间型数据格式 |
相关属性 | pattern:指定日期时间格式字符串 |
使用 | (@DateTimeFormat(pattern=“yyyy-MM-dd”) Date date) (@DateTimeFormat(pattern=“yyyy/MM/dd HH:mm:ss”) Date date) |
@RestController=@Controller+@ResponseBody
名称 | @RestController |
---|---|
类型 | 类注解 |
位置 | 基于SpringMVC的RESTful开发控制器类定义上方 |
作用 | 设置当前控制器类为RESTful风格, 等同于@Controller与@ResponseBody两个注解组合功能 |
MyBatis
@Param:多参数传递时重命名
@Select:查询
@Insert:添加
@Update:修改
@Delete:删除
MyBatisPlus
@TableField:设置属性和数据库的字段关系
名称 | @TableField |
---|---|
类型 | 属性注解 |
位置 | 模型类属性定义上方 |
作用 | 设置当前属性对应的数据库表中的字段关系 |
相关属性 | value(默认):设置数据库表字段名称 exist:设置属性在数据库表字段中是否存在,默认为true,此属性不能与value合并使用 select:设置属性是否参与查询,此属性与select()映射配置不冲突 fill:填充策略 |
使用 | @TableField(value=“pwd”) @TableField(value=“pwd”,select=false) @TableField(exist=false) @TableField(fill = FieldFill.INSERT):插入时填充 @TableField(fill = FieldFill.INSERT_UPDATE):插入和修改时填充 |
@TableName:设置表名
名称 | @TableName |
---|---|
类型 | 类注解 |
位置 | 模型类定义上方 |
作用 | 设置当前类对应于数据库表关系 |
相关属性 | value(默认):设置数据库表名称 |
使用 | @TableName(“tbl_user”) |
@TableId:设置主键生成方式
名称 | @TableId |
---|---|
类型 | 属性注解 |
位置 | 模型类中用于表示主键的属性定义上方 |
作用 | 设置当前类中主键属性的生成策略 |
相关属性 | value(默认):设置数据库表主键名称 type:设置主键属性的生成策略,值查照IdType的枚举值 |
使用 | @TableId(type = IdType.ASSIGN_UUID) |
AUTO:数据库自增
ASSIGN_ID:雪花算法生成id
ASSIGN_UUID:以UUID生成算法作为id生成策略
@TableLogic:逻辑删除
名称 | @TableLogic |
---|---|
类型 | 属性注解 |
位置 | 模型类中用于表示删除字段的属性定义上方 |
作用 | 标识该字段为进行逻辑删除的字段 |
相关属性 | value:逻辑未删除值 delval:逻辑删除值 |
使用 | @TableLogic(value=“0”,delval=“1”) |
@MapperScan(“com.dao”):扫描dao
扫描后可以不使用@Mapper
SpringCloud
@EnableDiscoveryClient:启动类注解,开启Nacos服务注册
@EnableFeignClients(basePackages = “”):启动类注解,开启远程调用
@FeignClient:类注解,标记远程调用的模块
lombok
- @Setter:为模型类的属性提供setter方法
- @Getter:为模型类的属性提供getter方法
- @ToString:为模型类的属性提供toString方法
- @EqualsAndHashCode:为模型类的属性提供equals和hashcode方法
- @Data:是个组合注解,包含上面的注解的功能
- @NoArgsConstructor:提供一个无参构造函数
- @AllArgsConstructor:提供一个包含所有参数的构造函数
- @Slf4j:打印日志信息
Spring Cache
注解 | 说明 |
---|---|
@EnableCaching | 开启缓存注解功能 |
@Cacheable | 在方法执行前spring先查看缓存中是否有数据,如果有数据,则直接返回缓存数据;若没有数据,调用方法并将方法返回值放到缓存中 |
@CachePut | 将方法的返回值放到缓存中 |
@CacheEvict | 将一条或多条数据从缓存中删除 |
key=“缓存key”,value=“缓存名称,每个缓存名称可以有多个key”,condition=“满足条件则缓存”,unless=“满足条件则不缓存”,allEntries="true"清除该key所有数据,keyGenerator = “keyGenerator自定义key规则,在配置类配置”
Swagger
注解 | 说明 |
---|---|
@EnableSwagger2 | 开启Swagger2 |
@Api | 修饰整个类,描述Controller的作用 |
@ApiOperation | 描述一个类的一个方法,或者说一个接口 |
@ApiParam | 单个参数描述 |
@ApiModel | 用对象来接收参数 |
@ApiModelProperty | 用对象接收参数时,描述对象的一个字段 |
@ApiImplicitParam | 一个请求参数 |
@ApiImplicitParams | 多个请求参数 |
@EnableKnife4j | 功能增强,可以查看接口文档 http://localhost:+端口号+/doc.html |
EasyExcel
注解 | 说明 |
---|---|
@ExcelProperty | 设置表头内容 @ExcelProperty(value = “用户编号”,index = 0),index为第几列 |
更多推荐
Java后端开发注解总结
发布评论