控制器部分
@PostMapping
以post请求方式映射URL
@GetMapping
以get请求方式映射URL
@Transactional
详细介绍 https://blog.csdn.net/nextyu/article/details/78669997
验证部分
@RequiresPermissions
该注解是Shiro验证框架中的注解,验证用户是否登录,等同于方法subject.isAuthenticated() 结果为true时。
@RequiresUser
验证用户是否被记忆,user有两种含义:
一种是成功登录的(subject.isAuthenticated() 结果为true);
另外一种是被记忆的(subject.isRemembered()结果为true)。
@RequiresGuest
验证是否是一个guest的请求,与@RequiresUser完全相反。
换言之,RequiresUser == !RequiresGuest。
此时subject.getPrincipal() 结果为null.
@RequiresRoles
例如:@RequiresRoles("aRoleName");
void someMethod();
如果subject中有aRoleName角色才可以访问方法someMethod。如果没有这个权限则会抛出异常AuthorizationException。
@RequiresPermissions
例如: @RequiresPermissions({"file:read", "write:aFile.txt"} )
void someMethod();
要求subject中必须同时含有file:read和write:aFile.txt的权限才能执行方法someMethod()。否则抛出异常AuthorizationException。
实体部分
@Id
@Id 标注用于声明一个实体类的属性映射为数据库的主键列。该属性通常置于属性声明语句之前,可与声明语句同行,也可写在单独行上。
@Id标注也可置于属性的getter方法之前。
@GeneratedValue
用于标注主键的生成策略,通过strategy 属性指定,有四种策略:
–IDENTITY:采用数据库ID自增长的方式来自增主键字段,Oracle 不支持这种方式;
–AUTO: JPA自动选择合适的策略,是默认选项;
–SEQUENCE:通过序列产生主键,通过@SequenceGenerator 注解指定序列名,MySql不支持这种方式
–TABLE:通过表产生主键,框架借由表模拟序列产生主键,使用该策略可以使应用更易于数据库移植。
@Entity
表明这是一个实体类,要与数据库做orm映射,默认表的名字就是类名,表中的字段就是类中的属性。它的定义如下:其中name属性表示用JPQL语句时写的表的名字,如果没有在@Table注解中指定表名,这个名字也将作为表名映射到数据库
@Table
@Table 当实体类与其映射的数据库表名不同名时需要使用 @Table注解说明,该标注与 @Entity 注解并列使用,置于实体类声明语句之前,可写于单独语 句行,也可与声明语句同行。
@Table注解的常用选项是 name,用于指明数据库的表名
@Table注解还有两个选项 catalog 和 schema 用于设置表所属的数据库目录或模式,通常为数据库名
@Column
用来改变class中字段名与db中表的字段名的映射规则
@DynamicInsert
设置为true,表示insert对象的时候,生成动态的insert语句,如果这个字段的值是null就不会加入到insert语句中,默认false。
@DynamicUpdate
设置为true,表示update对象的时候,生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中,默认false。
@WebFilter
过滤器注解,详细了解如下链接
https://www.cnblogs.com/jinb/p/6915351.html
java元注解
适用于其他注释的注释称为元注释。 java.lang.annotation中定义了几种元注释类型。
@Retention
@Retention annotation指定标记注释的存储方式:
- RetentionPolicy.SOURCE - 标记的注释仅保留在源级别中,并由编译器忽略。
- RetentionPolicy.CLASS - 标记的注释在编译时由编译器保留,但Java虚拟机(JVM)会忽略。
- RetentionPolicy.RUNTIME - 标记的注释由JVM保留,因此运行时环境可以使用它。
@Target
@Target注释标记另一个注释,以限制注释可以应用于哪种Java元素,目标注释指定下列元素类型之一作为其值:
- ElementType.ANNOTATION_TYPE可以应用于注释类型。
- ElementType.CONSTRUCTOR可以应用于构造函数。
- ElementType.FIELD可以应用于字段或属性。
- ElementType.LOCAL_VARIABLE可以应用于局部变量。
- ElementType.METHOD可以应用于方法级注释。
- ElementType.PACKAGE可以应用于包声明。
- ElementType.PARAMETER可以应用于方法的参数。
- ElementType.TYPE可以应用于类的任何元素。
@Inherited
@inherit 可以允许注解继承父类注解,并且这个注解只适用于类声明
@Repeatable
这个注解可以使相同的注解多次作用于同一个类或字段上,例如:
@Schedule(dayOfMonth="last")
@Schedule(dayOfWeek="Fri", hour="23")
public void doPeriodicCleanup() { ... }