注解总结
1.swagger注解和功能介绍(API接口)
@Api:
类,标识这个类是swagger的资源
@ApiModel:
类,描述一个Model的信息
(一般用在请求参数无法使用@ApiImplicitParam注解进行描述的时候)
@ApiOperation:
方法,一个http请求的操作
@ApiImplicitParams :
方法,一组参数说明
@ApiImplicitParam :
方法,单独的请求参数
@ApiResponse :
错误的响应
@ApiModelProperty:
方法,对model属性的说明或者数据操作更改
@ApiParam:
方法,用于方法,参数,字段说明;
表示对参数的添加元数据(说明或是否必填等)
@ApiIgnore:
用于类,方法,方法参数,表示这个方法或者类被忽略
2.lombok 注解和功能介绍
@Data:
注解在类上;提供类所有属性的getting和setting方法,
此外还提供了equals、canEqual、hashCode、toString 方法
@Setter:
注解在属性上;为属性提供setting 方法
@Getter:
注解在属性上;为属性提供getting 方法
@Log4j :
注解在类上;为类提供一个属性名为log 的 log4j 日志对象
@NoArgsConstructor:
注解在类上;为类提供一个无参的构造方法
@AllArgsConstructor:
注解在类上;为类提供一个全参的构造方法
3.springboot注解介绍和说明
1.启动配置加载初始化对象 @SpringBootApplication:默认在主类加上 @Configuration、@EnableAutoConfiguration、@ComponentScan 例子: @SpringBootApplication public class SpringSecurityJwtGuideApplication { public static void main(java.lang.String[] args) { SpringApplication.run(SpringSecurityJwtGuideApplication.class, args); } } @EnableAutoConfiguration: 启用 SpringBoot 的自动配置机制 @ComponentScan: 扫描被@Component (@Service,@Controller)注解的 bean, 注解默认会扫描该类所在的包下所有的类 @Configuration: 允许在 Spring 上下文中注册额外的 bean 或导入其他配置类
2.Spring Bean 相关
@Autowired:
自动导入对象到类中,被注入进的类同样要被Spring容器管理
比如:Service 类注入到 Controller 类中
我们一般使用 @Autowired 注解让 Spring 容器
帮我们自动装配 bean。要想把类标识成可用于
@Autowired 注解自动装配的 bean 的类,可以采用以下注解实现
@Component
通用的注解,可标注任意类为Spring组件。
如果一个Bean不知道属于哪个层,可以使用@Component注解标注
@Repository
对应持久层即 Dao 层,主要用于数据库相关操作
@Service
对应服务层,主要涉及一些复杂的逻辑,需要用到 Dao 层
@Controller
对应Spring MVC控制层,主要用户接受用户
请求并调用 Service 层返回数据给前端页面。
@RestController
@RestController注解是@Controller和@ResponseBody的合集,
表示这是个控制器 bean,并且是将函数的返回值直接填入HTTP响应体中,
是REST风格的控制器
单独使用 @Controller 不加 @ResponseBody的话一般使用
在要返回一个视图的情况,这种情况属于比较传统的Spring MVC的应用,
对应于前后端不分离的情况。@Controller +@ResponseBody返回JSON
或XML形式数据
@Scope:
四种常见的 Spring Bean 的作用域:
singleton :
唯一bean实例,Spring中的bean默认都是单例的
prototype :
每次请求都会创建一个新的 bean 实例
request :
每一次HTTP请求都会产生一个新的bean,
该bean仅在当前HTTP request内有效
session:
每一次HTTP请求都会产生一个新的bean,
该bean仅在当前HTTP session内有效
@Configuration
一般用来声明配置类,可以使用@Component注解替代,
不过使用Configuration注解声明配置类更加语义化
HTTP 请求类型:
@PathVariable 和 @RequestParam
@RequestBody:
用于读取 Request 请求(可能是 POST,PUT,DELETE,GET 请求)的body部分并且Content-Type
为application/json 格式的数据,接收到数据之后会自动将数据绑定到 Java 对象上去。
系统会使用HttpMessageConverter或者自定义的HttpMessageConverter
将请求的body中的json字符串转换为java对象
4.springboot注解属性文件读取
1.@value(常用)
2.@ConfigurationProperties(常用)
3.PropertySource(不常用)
字段校对:
5.全局处理 Controller 层异常
@ControllerAdvice :注解定义全局异常处理类
@ExceptionHandler :注解声明异常处理方法
6.JPA相关的注解
@Entity
声明一个类对应一个数据库实体
@Table
设置表明
创建主键
主要策略:
public enum GenerationType {
/**
* 使用一个特定的数据库表格来保存主键
* 持久化引擎通过关系数据库的一张特定的表格来生成主键,
TABLE,
/**
*在某些数据库中,不支持主键自增长,比如Oracle、PostgreSQL其提供了一种叫做"序列(sequence)"的机制生成主键
*/
SEQUENCE,
/**
* 主键自增长
*/
IDENTITY,
/**
*把主键生成策略交给持久化引擎(persistence engine),
*持久化引擎会根据数据库在以上三种主键生成 策略中选择其中一种
*/
AUTO
}
@GenericGenerator声明一个主键策略,
然后 @GeneratedValue使用这个策略
字段设置:
@Column 声明字段
@Transient :声明不需要与数据库映射的字段,在保存的时候不需要保存进数据库 。
@Lob:声明某个字段为大字段。
可以使用枚举类型的字段,不过枚举字段要用@Enumerated注解修饰
@Modifying 注解提示 JPA 该操作是修改操作,
注意还要配合@Transactional注解使用
关联关系
@OneToOne 声明一对一关系
@OneToMany 声明一对多关系
@ManyToOne声明多对一关系
@MangToMang声明多对多关系
事务 @Transactional
我们知道 Exception 分为运行时异常 RuntimeException
和非运行时异常。在@Transactional注解中如果不配置rollbackFor属性,
那么事物只会在遇到RuntimeException的时候才会回滚,
加上rollbackFor=Exception.class,可以让事物在遇到非运行时异常时也回滚
@Transactional 注解一般用在可以作用在类或者方法上
作用于类:
当把@Transactional 注解放在类上时,
表示所有该类的public 方法都配置相同的事务属性信息
作用于方法:
当类配置了@Transactional,方法也配置了@Transactional,
方法的事务会覆盖类的事务配置信息
@JsonIgnoreProperties
作用在类上用于过滤掉特定字段不返回或者不解析
@JsonIgnore
一般用于类的属性上,作用和上面的@JsonIgnoreProperties 一样
@JsonFormat
一般用来格式化 json 数据
7.测试类相关
@ActiveProfiles
一般作用于测试类上, 用于声明生效的 Spring 配置文件
@Test
声明一个方法为测试方法
@Transactional
被声明的测试方法的数据会回滚,避免污染测试数据
@WithMockUser Spring Security
提供的,用来模拟一个真实用户,并且可以赋予权限
8.@bean
这个注解主要用在方法上,声明当前方法体中包含了最终产生bean实例的逻辑,
方法的返回值是一个Bean。这个bean会被Spring加入到容器中进行管理,
默认情况下bean的命名就是使用了bean注解的方法名。
@Bean 一般和@Component或者@Configuration一起使用
@Bean 显式声明了类与 bean 之间的对应关系,
并且允许用户按照实际需要创建和配置 bean 实例。
学习来源:
https://zhuanlan.zhihu.com/p/135987318
http://www.hellojava.com/a/88990.html