项目常用注解(Java开发必备,最完整的注解说明)
2021-11-02 21:48:32 0 举报
AI智能生成
详细的描述了Java开发中所有常用的注解以及注解的说明,非常适合初学者。
作者其他创作
大纲/内容
作者
关注作者微信号,回复“面试资料”,免费领取为金三银四冲刺的面试资料
spring与 spring mvc
@Controller
用于标注控制层组件
@RestController
@RestController注解,相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面
@Service
服务层组件,用于标注业务层组件
@Bean
@Bean是一个方法级别上的注解,主要用在@Configuration注解的类里,
也可以用在@Component注解的类里。添加的bean的id为方法名
@Component
泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注
@GetMapping
method为get请求的@RequestMapping简写
@PostMapping
method为post请求的@RequestMapping简写
@PutMapping
注解用于处理HTTP PUT请求,并将请求映射到具体的处理方法中,是一个组合注解,相当于是@RequestMapping(method=HttpMethod.PUT)
@DeleteMapping
注解用于处理 HTTP DELETE请求,并将请求映射到删除方法。相当于是@RequestMapping(method=HttpMethod.DELETE)
@RequestMapping
处理请求地址映射的注解,可用于类或方法上
用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径
@PathVariable
他的作用用在参数里用来提取url中的请求参数
@RequestParam
将请求参数绑定到你控制器的方法参数上
@Autowired
对类成员变量、方法及构造函数进行标注,完成自动装配的工作
通过 @Autowired的使用来消除 set ,get方法
默认是按照byType进行注入的
@Qualifier
@Autowired @Qualifier("personDaoBean") 存在多个实例配合使用
@Resource
注解由J2EE提供,需要导入包javax.annotation.Resource。
默认按照名称方式进行bean匹配,
@Configuration
这是 Spring 3.0 添加的一个注解,用来代替applicationContext.xml 配置文件,
所有这个>配置文件里面能做到的事情都可以通过这个注解所在类来进行注册。
@Scope
常用于指定Spring Bean作用域
Singleton
一个Spring容器中只有一个Bean实例,全局容器共享一个实例
分支主题
prototype
每次调用新建一个Bean的实例
request
对于每次HTTP请求,使用request定义的Bean都将产生一个新实例,即每次HTTP请求将会产生一个新实例。只有在Web应用中使用Spring时,该作用域才有效
sessiion
session作用域表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效
global session
global session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义
@Repository
持久层组件,用于标注数据访问组件,即DAO组件
@Transactional
Spring事务注解
Spring事务七大传播行为
@Transactional(propagation=Propagation.REQUIRED) (等价与@Transactional)如果存在事务,
则使用该事务, 不存在,则新建一个(默认情况下)
@Transactional(propagation=Propagation.NOT_SUPPORTED)容器不为这个方法开启事务
@Transactional(propagation=Propagation.REQUIRES_NEW) 如果当前存在事务,
则挂起当前事务并开启一个新的事务执行,新事务执行完毕之后,唤醒之前挂起的事务,
继续执行之前的事务,如果当前不存在事务,则新建一个事务。
@Transactional(propagation=Propagation.MANDATORY) 必须在一个已有的
事务中执行,否则抛出异常
@Transactional(propagation=Propagation.NEVER) 必须在一个没有的事务中执行,
否则抛出异常(与Propagation.MANDATORY相反)
@Transactional(propagation=Propagation.SUPPORTS) 如果其他bean调用这个方法,
在其他bean中声明事务,那就用事务.如果其他bean没有声明事务,那就不用事务.
事物超时设置:@Transactional(timeout=30) //默认是30秒
Spring事务五大隔离级别
ISOLATION_DEFAULT 这是一个PlatfromTransactionManager默认的隔离级别,
使用数据库默认的事务隔离级别.另外四个与JDBC的隔离级别相对应;
@Transactional(isolation = Isolation.READ_UNCOMMITTED)读取未提交数据(会出现脏读, 不可重复读) 基本不使用
@Transactional(isolation = Isolation.READ_COMMITTED)读取已提交数据(会出现不可重复读和幻读)
这种事务隔离级别可以避免脏读出现,但是可能会出现不可重复读和幻像读。
@Transactional(isolation = Isolation.REPEATABLE_READ)可重复读(会出现幻读) 这种事务隔离级别可以防止脏读,
不可重复读。但是可能出现幻像读。 它除了保证一个事务不能读取另一个事务未提交的数据外,
还保证了避免下面的情况产生(不可重复读)。
@Transactional(isolation = Isolation.SERIALIZABLE)串行化这是花费最高代价但是最可靠的事务隔离级别。
事务被处理为顺序执行。 除了防止脏读,不可重复读外,还避免了幻像读。
@RequestBody
主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的),常用用于方法形参之前
@ResponseBody
表示该方法的返回结果直接写入HTTP response body中
一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。
@Scheduled
spring定时任务注解,使用cron表达式
@InitBinder
绑定请求参数到指定的属性编辑器,解决类型的转换问题
@ComponentScan
用于标注一个普通的组件类,它没有明确的业务范围,只是通知Spring被此注解的类需要被Spring Bean容器进行管理
@Primary
自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常
@DependsOn
定义Bean初始化及销毁时的顺序
@Lazy(true)
表示延迟初始化
@PropertySource
目的是加载指定路径下的属性文件
@Order
利用@Order控制配置类的加载顺序
spring aop
@Pointcut
声明切入点表达式,一般在该方法中不再添加其他代码
@Around
环绕通知,围绕着方法执行
@Aspect
配置在类上,把这个类声明为一个切面:需要把该类放入到IOC容器中,再声明为一个切面
@Order
指定切面的优先级,当有多个切面时,数值越小优先级越高
mybatic plus
@TableName
表名注解
@TableField
字段注解
@TableId
主键注解
@SqlParser
租户注解,支持method上以及mapper接口上
@Version
乐观锁注解、标记 @Verison 在字段上
MyBatis
@Insert
插入sql , 和xml insert sql语法完全一样
@Update
更新sql, 和xml update sql语法完全一样
@Delete
删除sql, 和xml delete sql语法完全一样
@Param
入参
@Results
设置结果集合@Result : 结果
@ResultMap
引用结果集合
@SelectKey
获取最新插入id
@CacheNamespace
@CacheNamespace(blocking = true) //mybatis 基于注解方式实现配置二级缓存 *这里*
@MapperScan
@MapperScan("com.study.demo.mybatis.mapper")
主要做了两件事情:
@Mapper
从mybatis3.4.0开始加入了@Mapper注解,目的就是为了不再写mapper映射文件
其他
@CsrfToken
完成检测登录时是否带有token,反正跨站请求伪造攻击
@SuppressWarnings
对被批注的代码元素内部的某些警告保持静默
@JsonProperty
@JsonProperty 此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,如把trueName属性序列化为name,@JsonProperty("name")。
拓展
@JsonIgnore 此注解用于属性上,作用是进行JSON操作时忽略该属性。
@JsonFormat 此注解用于属性上,作用是把Date类型直接转化为想要的格式,如@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")。
@JsonInclude 不返回null字段,属性值为null的不参与序列化。
例子:@JsonInclude(Include.NON_NULL)
Spring Boot
@SpringBootAppliction
此注解是Spring Boot项目的基石,创建SpringBoot项目的Application时会默认加上
@EnableAutoConfiguration
启用SpringBoot的自动配置机制
@ConfigurationProperties
用于将类中属性与配置文件(application.yml)中的相关配置进行绑定;需要导入依赖
@SpringCloudApplication
Spring Cloud组合注解,该注解中包含了上述所引用的三个注解
收藏
收藏
0 条评论
下一页