Java 注解 – 最基本的注解,其他注解都是从此得来
注解 | 用途 | 备注 |
---|---|---|
@Override | 检查该方法是否是重写方法。如果发现其父类,或者是引用的接口中并没有该方法时,会报编译错误。 | |
@Deprecated | 标记过时方法。如果使用该方法,会报编译警告 | |
@SuppressWarnings | 指示编译器去忽略注解中声明的警告 | |
@Retention | 标识这个注解怎么保存,是只在代码中,还是编入class文件中,或者是在运行时可以通过反射访问 | |
@Documented | 标记这些注解是否包含在用户文档中 | |
@Target | 标记这个注解应该是哪种Java成员 | |
@Inherited | 标记这个注解是继承于哪个注解类(默认注解并没有继承于任何子类) | |
@SafeVarargs | Java7开始支持,忽略任何使用参数为泛型变量的方法或构造函数调用产生的警告 | |
@FunctionalInterface | Java8开始支持,标识一个匿名函数或函数式接口 | |
@Repeatable | Java8开始支持,标识某注解可以在同一个声明上使用多次 |
Spring 注解
注解 | 用途 | 备注 |
---|---|---|
@SpringBootApplication | 开启自动配置 | 相当于@ComponentScan、@EnableAutoConfiguration、@SpringBootConfiguration三个注解 可选参数含义: exclude = a.class:移除该类的对象 excludeName:过滤的类全路径 scanBasePackages:要扫描的包路径 scanBasePackageClasses:要扫描的类的对象 |
@ComponentScan | 自动扫描并加载符合条件的组件 | 将@Component、@Repository、@Bean等定义加载到IoC容器中, 可以通过basePackages等属性来细粒度的定制@ComponentScan自动扫描的范围,如果不指定,则默认Spring框架实现会从声明@ComponentScan所在类的package进行扫描 可选参数含义: basePackageClasses:对basepackages()指定扫描注释组件包类型安全的替代 excludeFilters:指定不适合组件扫描的类型 includeFilters:指定哪些类型有资格用于组件扫描 lazyInit:指定是否应注册扫描的beans为lazy初始化 nameGenerator:用于在Spring容器中的检测到的组件命名 resourcePattern:控制可用于组件检测的类文件 scopedProxy:指出代理是否应该对检测元件产生,在使用过程中会在代理风格时尚的范围是必要的 scopeResolver:用于解决检测到的组件的范围 useDefaultFilters:指示是否自动检测类的注释 |
@EnableAutoConfiguration | 收集和注册特定场景相关的bean定义 | 将所有符合自动配置条件的bean定义加载到IoC容器 |
@SpringBootConfiguration | 标注当前类是配置类 | @SpringBootConfiguration继承自@Configuration,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名 |
@EnableConfigurationProperties | 当@EnableConfigurationProperties注解应用到你的@Configuration时, 任何被@ConfigurationProperties注解的beans将自动被Environment属性配置 | 与@Configuration、 @ConfigurationProperties一起使用 |
@ConditionalOnBean | 当给定的在bean存在时,则实例化当前Bean | 用于修饰bean |
@ConditionalOnMissingBean | 当给定的在bean不存在时,则实例化当前Bean | 用于修饰bean |
@ConditionalOnClass | 当给定的类名在类路径上存在,则实例化当前Bean | 用于修饰bean |
@ConditionalOnMissingClass | 当给定的类名在类路径上不存在,则实例化当前Bean | 用于修饰bean |
@AliasFor | 用于为注解属性声明别名 | 复合注解、继承注解 |
Mybatis 注解
注解 | 用途 | 备注 |
---|---|---|
@Mapper | 在编译之后会生成相应的接口实现类 | 接口类上添加 |
@MapperScan | 指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类 | 相当于@Mapper的批量操作 |
Lombok 注解
注解 | 用途 | 备注 |
---|---|---|
@Data | 提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法 | |
@EqualsAndHashCode | 实现equals()方法和hashCode()方法 | |
@ToString | 实现toString()方法 | |
@Setter | 实现属性的set方法 | |
@Getter | 实现属性的get方法 | |
@NonNull | 标注属性不能为null | |
@Log4j | 提供一个属性名为log的log4j 日志对象 | |
@NoArgsConstructor | 实现一个无参的构造方法 | |
@AllArgsConstructor | 实现一个全参的构造方法 |
Feign 注解
注解 | 用途 | 备注 |
---|---|---|
@EnableFeignClients | 开启 Spring 对 Feign 的支持 | 高版本SpringBoot(引入spring-cloud-openfeign)与低版本(引入spring-cloud-netflix-core)引入的依赖不同 |
Ribbon 注解
注解 | 用途 | 备注 |
---|---|---|
@LoadBalanced | 开启负载均衡的功能 | 给RestTemplate bean 加一个@LoadBalanced注解,即可使 RestTemplate 在请求时拥有客户端负载均衡的能力 |
声明 Bean 注解
注解 | 用途 | 备注 |
---|---|---|
@Controller | 用于标注控制层组件 | |
@Service | 用于标注业务层组件 | |
@Repository | 用于标注数据访问层组件 | |
@Component | 如果没有明确分类,使用此注解标记为组件 |
注入 Bean 注解
注解 | 用途 | 备注 |
---|---|---|
@Autowired | 默认以byType方式 | |
@Qualifier | @Autowired+@Qualifier组合使用,@Qualifier指定byName | |
@Resource | 默认以byName方式 | |
@Inject | 可用于构造方法、方法、属性 | @Inject与@AutoWired一致,区别在于@Inject没有required属性 |
Bean 属性支持注解
注解 | 用途 | 备注 |
---|---|---|
@PostConstruct | spring容器启动时执行,可作为一些数据的常规化加载 | |
@Scope | 设置Spring容器如何新建Bean实例,默认单例 |
配置类注解
注解 | 用途 | 备注 |
---|---|---|
@ComponentScan | 用于对Component组件进行扫描,指定扫描包路径 | |
@Configuration | 声明当前类为配置类 | |
@ContextConfiguration | 声明加载配置ApplicationContext | 测试时使用 |
@Bean | 声明当前方法为一个bean | |
@PropertySource | 加载配置文件 | |
@Value | 为属性注入值 |
切面注解
注解 | 用途 | 备注 |
---|---|---|
@Aspect | 声明一个切面 | |
@Pointcut | 声明一个切点 | |
@After | 在切点方法之后执行 | |
@Before | 在切点方法之前执行 | |
@Around | 在切点执行之前和之后执行 | |
@AfterReturning | 入参相比较@After多了切点返回值 | |
@AfterThrowing | 异常抛出 |
SpringMVC 注解
注解 | 用途 | 备注 |
---|---|---|
@RestController | 该注解为一个组合注解,相当于@Controller和@ResponseBody的组合 | |
@RequestMapping | 用于映射Web请求,包括访问路径和参数 | |
@ResponseBody | 支持将返回值放在response内,而不是一个页面,通常用户返回json数据 | |
@RequestBody | 允许request的参数在request体中,而不是在直接连接在地址后面 | |
@PathVariable | 用于接收路径参数 | |
@ControllerAdvice | 控制器的全局配置,结合@ExceptionHandler、@InitBinder、@ModelAttribute注解到方法上 |
Shiro 权限控制注解
注解 | 用途 | 备注 |
---|---|---|
@RequiresPermissions | 判断用户是否有相应的权限 | |
@RequiresAuthentication | 验证用户是否登录,反之AuthorizationException异常 | |
@RequiresRoles | 验证是否有某角色权限,反之AuthorizationException异常 | |
@RequiresGuest | 验证是否是一个guest的请求 | |
@RequiresUser | 验证用户是否被记忆 | 成功登录(subject.isAuthenticated() 结果为true) 被记忆的(subject.isRemembered()结果为true) |
参数校验 javax.validation.constraints 注解
注解 | 用途 | 备注 |
---|---|---|
@Null | 被注释的元素必须为 null | |
@NotNull | 被注释的元素必须不为 null | |
@AssertTrue | 被注释的元素必须为 true | |
@AssertFalse | 被注释的元素必须为 false | |
@Min(value) | 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 | |
@Max(value) | 被注释的元素必须是一个数字,其值必须小于等于指定的最大值 | |
@DecimalMin(value) | 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 | |
@DecimalMax(value) | 被注释的元素必须是一个数字,其值必须小于等于指定的最大值 | |
@Size(max=, min=) | 被注释的元素的大小必须在指定的范围内 | |
@Digits (integer, fraction) | 被注释的元素必须是一个数字,其值必须在可接受的范围内 | |
@Past | 被注释的元素必须是一个过去的日期 | |
@Future | 被注释的元素必须是一个将来的日期 | |
@Pattern(regex=,flag=) | 被注释的元素必须符合指定的正则表达式 |
参数校验 Hibernate Validator 附加的 constraint 注解
注解 | 用途 | 备注 |
---|---|---|
@NotBlank(message =) | 验证字符串非null,且长度必须大于0 | |
被注释的元素必须是电子邮箱地址 | ||
@Length(min=,max=) | 被注释的字符串的大小必须在指定的范围内 | |
@NotEmpty | 被注释的字符串的必须非空 | |
@Range(min=,max=,message=) | 被注释的元素必须在合适的范围内 |