首页 > Spring 注解
头像
AnthonyLSZhu
编辑于 2020-09-01 18:31
+ 关注

Spring 注解

spring:
AOP注解:
@Aspect:作用是把当前类标识为一个切面供容器读取
@Pointcut:Pointcut是植入Advice的触发条件。每个Pointcut的定义包括2部分,一是表达式,二是方法签名。方法签名必须是 public及void型。
可以将Pointcut中的方法看作是一个被Advice引用的助记符,因为表达式不直观,因此我们可以通过方法签名的方式为 此表达式命名。因此Pointcut中的方法只需要方法签名,
而不需要在方法体内编写实际代码。
@Around:环绕增强,相当于MethodInterceptor
@AfterReturning:后置增强,相当于AfterReturningAdvice,方法正常退出时执行
@Before:标识一个前置增强方法,相当于BeforeAdvice的功能,相似功能的还有
@AfterThrowing:异常抛出增强,相当于ThrowsAdvice
@After: final增强,不管是抛出异常或者正常退出都会执行
@Order或者接口Ordered的作用是定义Spring IOC容器中Bean的执行顺序的优先级,而不是定义Bean的加载顺序,Bean的加载顺序不受@Order或Ordered接口的影响;
启动类注解:
@SpringBootApplication = (默认属性)@Configuration + @EnableAutoConfiguration + @ComponentScan
@Configuration:定义配置类,被注解的类内部包含有一个或多个被 @Bean 注解的方法
@EnableAutoConfiguration:开启自动配置功能,自动根据导入的依赖来自动配置项目
@ComponentScan:会自动扫描指定包下的全部标有@Component的类,并注册成bean,当然包括@Component下的子注解@Service,@Repository,@Controller。
@Repository用于标注数据访问组件,即DAO组件
@PropertySource 用于加载制定配置文件

请求注解:
@RequestBody:将请求体中的 json 字符串绑定到相应的 Bean 上
@ResponseBoby:将返回的对象转换成 json 字符串返回
@Controller:标注该类时一个控制器
@RestController:@Controller + @ResponseBody,标注该类是一个控制器,但不能返回页面,只能返回 json
@RequestMapping:提供路由信息,负责 url 到 控制器具体函数的映射
@RequestParam:将 url 中的参数绑定到函数的变量中
@PathVariable:映射 url 绑定的占位符
@GetMapping = @RequestMapping(method = RequestMethod.GET)
@PostMapping = @RequestMapping(method = RequestMethod.POST)
@PutMapping = @RequestMapping(method = RequestMethod.PUT)
@DeleteMapping = @RequestMapping(method = RequestMethod.DELETE)

配置注解
@Import:用来导入其他配置类
@ImportResource:用来加载 xml 配置文件
@Autowired:自动导入依赖的 Bean
@Service:一般用于修饰 service 层的组件
@Repository:使用该注解可以确保 dao 或者 repositories 提供异常转译,这个注解修饰的类会被ComponetScan发现并配置,同时也不需要为它们提供XML配置项
@Bean:用 @Bean 标注方法等价于XML中配置的 Bean
@Value:注入properties/yml 配置的属性的值
@Inject:等价于默认的 @Autowired,只是没有 required 属性
@Component:泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注
@Bean:标注在方法上,将方法的返回对象交由 Spring 处理
@AutoWired:自动导入依赖的 Bean,byType 方式
@Qualifier:当有多个同一类型的 Bean 时,可以用 @Qualifier("name") 来指定,与 @Autowired 配合使用
@Scheduled 执行定时任务(cron表达式详解:https://www.cnblogs.com/dyppp/p/7498457.html

JPA 注解
@Entity、@Table(name=""):表明这是一个实体类,这两个注解一般一块使用,但是如果表名和实体类名相同的话,@Table可以省略
@MappedSuperClass:用在确定是父类的entity上,父类的属性子类可以继承
@NoRepositoryBean:一般用作父类的 repository,有这个注解,spring不会去实例化该 repository
@Column:如果字段名与列名相同,则可以省略
@Id:表示该属性为主键
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "repair_seq"):表示主键生成策略是sequence(可以为Auto、IDENTITY、native等,Auto表示可在多个数据库间切换),指定 sequence 的名字是repair_seq
@SequenceGeneretor(name = "repair_seq",sequenceName = "seq_repair",allocationSize = 1):name 为 sequence的名称,以便使用,sequenceName 为数据库的 sequence 名称,两个名称可以一致
@Transient:表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性,如果一个属性并非数据库表的字段映射,就务必将其标示为 @Transient ,否则,ORM框架默认其注解为@Basic
@Basic(fetch=FetchType.LAZY):标记可以指定实体属性的加载方式
@JsonIgnore:作用是 json 序列化时将 Bean 中的一些属性忽略掉,序列化和反序列化都受影响
@JoinColumn(name="loginId"):一对一,本表中指向另一个表的外键;一对多,另一个表指向本表的外键
@OneToOne、@OneToMany、@ManyToOne:对应 hibernate 配置文件中的一对一、一对多、多对一

@RestControllerAdvice  : 定义全局异常处理类 , @ControllerAdvice,@RestControllerAdvice 注解,可以用于定义@ExceptionHandler、@InitBinder、@ModelAttribute,并应用到所有@RequestMapping中
@ExceptionHandler : 声明异常处理方法
@ResponseStatus : 设置response status
@JsonInclude : 实体类与json互转的时候 属性值为null的不参与序列化
@JsonPropertyOrder
@JsonProperty
@EnableScheduling

@Api注解可以用来标记当前Controller的功能。
@ApiOperation注解用来标记一个方法的作用。
@ApiImplicitParam注解用来描述一个参数,可以配置参数的中文含义,也可以给参数设置默认值,这样在接口测试的时候可以避免手动输入。
如果有多个参数,则需要使用多个@ApiImplicitParam注解来描述,多个@ApiImplicitParam注解需要放在一个@ApiImplicitParams注解中。
需要注意的是,@ApiImplicitParam注解中虽然可以指定参数是必填的,但是却不能代替@RequestParam(required = true),前者的必填只是在Swagger2框架内必填,抛弃了Swagger2,这个限制就没用了,所以假如开发者需要指定一个参数必填,@RequestParam(required = true)注解还是不能省略。


@Documented 注解表明这个注解应该被 javadoc工具记录. 默认情况下,javadoc是不包括注解的. 但如果声明注解时指定了 @Documented,则它会被 javadoc 之类的工具处理, 所以注解类型信息也会被包括在生成的文档中,是一个标记注解,没有成员。
@Retention可以用来修饰注解,是注解的注解,称为元注解。
按生命周期来划分可分为3类:
1、RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;
2、RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;
3、RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;
@Target说明了Annotation所修饰的对象范围:Annotation可被用于 packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)

idea:
main快捷键 psvm
输出打印快捷键 sout:

全部评论

(0) 回帖
加载中...
话题 回帖

相关热帖

近期热帖

近期精华帖

热门推荐