Spring框架注解
2021-01-22 18:15:22 11 举报
AI智能生成
Spring框架注解
作者其他创作
大纲/内容
数据访问注解
@Transactional
用于接口、接口中的方法、类、类中的公有方法光靠该注解并不足以实现事务仅是一个元数据,运行时架构会使用它配置具有事务行为的Bean
该注解还支持以下特性:
传播类型
隔离级别
操作超时
只读标记
JPA注解
@Entity
表明这是一个实体类。一般和@Table配合使用。如果表名和实体类名相同的话,@Table可以省略
@Table
映射数据库中的表
@Column
映射表中的列
@Id
表示该属性为主键
@GeneratedValue
指定主键生成器的名字和生成策略
@SequenceGeneretor
自动为实体的数字标识字段/属性分配值
@MappedSuperClass
用在确定是父类的Entity上。父类的属性可被子类继承
@NoRepositoryBean
在充当父类的Repository上注解,以告诉Spring不要实例化该Repository
@Transient
@Basic(fetch=FetchType.LAZY)
指定实体属性的加载方式
@JsonIgnore
标记在属性上,指示当进行序列化或反序列化时,忽略该属性
@JoinColumn
一对一:本表中指向另一个表的外键。一对多:另一个表指向本表的外键
@OneToOne
一对一
@OneToMany
一对多
@ManyToOne
多对一
SpringMVC和REST注解
@Controller
用于定义控制器类,在spring 项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),一般这个注解在类中,通常方法需要配合注解@RequestMapping
@RestController
@RequestMapping
@RequestMapping变体
@GetMapping
等于@RequestMapping(method = RequestMethod.GET)for select
@PostMapping
等于@RequestMapping(method = RequestMethod.POST)for create new object
@PutMapping
等于@RequestMapping(method = RequestMethod.PUT)for update operation
@PatchMapping
等于@RequestMapping(method = RequestMethod.PATCH)partial update operation
@DeleteMapping
等于@RequestMapping(method = RequestMethod.DELETE)for delete operation
@CookieValue
用于方法参数上获得cookie
@CrossOrigin
用于类和方法上,以实现跨域请求。有时,运行JavaScript的主机和服务数据的主机不是同一个,此时就涉及到跨域(CORS)
@ExceptionHandler
用来定义异常处理类
@InitBinder
初始化绑定器,用于数据绑定、设置数据转换器等
@Mappings@Mapping
用于字段上。Mapping是一个Meta注解,以指示web映射注解Mappings可用于多个
@MatrixVariable
矩阵变量
@RequestAttribute
帮助我们访问早先预存的全局请求属性(控制器之外)
@RequestBody
指示方法参数应该绑定到Http请求BodyHttpMessageConveter负责将HTTP请求消息转为对象
@RequestHeader
映射控制器参数到请求头的值
@RequestParam
抽取查询参数,表单参数,甚至表单中的文件
@ResponseBody
指示方法返回值应该直接写入Response Body(不再走视图处理器)Spring使用HttpMessageConverter实现了返回对象转为响应体
@ResponseStatus
用于方法和异常类上。以一个状态码作为指示,且原因必须返回。
也可注解于Controller,其所有的@RequestMapping方法都会继承它
@SessionAttribute
绑定方法参数到会话属性经常用于取回会话中的属性,然后全局管理
@SessionAttributes
用于将会话属性用Bean封装
@JsonBackReference
解决嵌套外链问题
@RepositoryRestResourcepublic
配合spring-boot-starter-data-rest使用
@PathVariable
路径变量获取路径上传过来的参数
@ModelAttribute
把值绑定到Model中,使全局@RequestMapping可以获取到该值
@Valid
验证器,一般配合@InitBinder使用
全局异常处理
@ControllerAdvice
包含@Component。可被扫描到全局处理异常器一般与@ExceptionHandler一起使用
@RestControllerAdvice
@RestControllerAdvice = @ControllerAdvice +@ResponceBody
Spring框架注解
核心注解
@Required
用于Bean的Setter方法上,以指示该Bean组装时必须要有该属性,否则抛出BeanInitializationException
@Autowired
@Qualifier
only field level通常和@Autowired一起使用。当对同一字段创建多个bean时,@Qualifier可帮你做更详细配置。
@Primary
基本可以和@Qualifier等同。但有时,我们会用到一个常用的Bean,而其它的很少用到时,就用它来指示最常用的那个Bean这样,当Spring会选择优先创建该Bean
@Scope
用来定义Bean或组件的范围可选项为singleton 单例,全局1个,默认值prototype 原型requestsessionglobalSessiona custom scope建议不要直接写字符串,用value = ConfigurableBeanFactory.SCOPE_SINGLETON更合适,不易出错
@Configuration
class level当在类上声明它时,意味着该类提供了1个或多个bean方法,该方法由Spring容器在运行时处理
@ComponentScan
level main class only与@Configuration注解一起,发现和装配Bean。可通过basePackageClasses 或basePackage指定扫描的基类或基包。如果声明的包未定义的话,会从声明该注解的类所在的包及子包开始扫描
@Bean
@PreDestroy 和@PostConstruct
指示Bean的初始化方法和销毁方法
@Lazy
@Value
可用于字段,构造器参数,方法参数,以指示一个默认的值。支持#{...}和${...}这两种占位符。注入Spring boot application.properties配置的属性的值
@Import
用来导入其他配置类
@ImportResource
加载xml配置文件
@PropertySource
加载属性资源文件
原型注解
@Component
class level可配合CommandLineRunner使用,在程序启动后执行一些基础任务;当组件不好归类的时候,可以使用这个注解进行标注
@Service
一般用于修饰service层的组件
@Repository
声明该类是一个Repository
SpringBoot注解
@EnableAutoConfiguration
level main class only自动配置。尝试根据你添加的jar依赖自动配置你的Spring应用。例如,如果classpath下存在HSQLDB,并且你没有手动配置任何的数据库连接beans,Spring将会自动配置一个内存型(in-memory)数据库”。你可以将@EnableAutoConfiguration或@SpringBootApplication注解添加到一个@Configuration类上来选择自动配置。如果发现应用了你不想要的特定自动配置类,可使用@EnableAutoConfiguration注解的排除属性来禁用它们
@SpringBootApplication
@SpringBootApplication =@EnableAutoConfiguration (使能自动配置)+@ComponentScan( 扫描组件 )+@Configuration (使用基于Java的配置)
SpringCloud注解
@EnableConfigServer
配置服务器
@EnableEurekaServer
注册服务器
@EnableDiscoveryClient
发现客户端
@EnableCircuitBreaker
熔断器
@HystrixCommand
服务降级
缓存注解
@Cacheable
方法级
@CachePut
方法级,更新缓存
@CacheEvict
方法级,清除缓存
@CacheConfig
在类级别配置缓存,以避免多次声明
任务执行和调度注解
@Scheduled
方法级,具有该注解的方法应无返回值,且不接受任何参数
@Async
方法级,每个方法均都在单独的线程中,可接受参数;可返回值,也可不返回值。
测试注解
@BootstrapWith
类级别,配置Spring测试上下文框架的启动
@ContextConfiguration
类级别,指定配置文件
@WebAppConfiguration
类级别,指示ApplicationContext加载的集成测试环境应为WebApplicationContext
@Timed
指定测试方法的执行时间,超时失败
@Repeat
运行次数
@Commit
类级和方法级,指示事务的提交
@RollBack
类级和方法级,指示事务的回滚
@DirtiesContext
类级和方法级,指示ApplicationContext已修改,触发重加载以进行后续的测试
支持3种关闭上下文的方式
BEFORE_METHOD
BEFORE_CLASS
BEFORE_EACH_TEST_METHOD
@BeforeTransaction
测试类的void方法上,指示具有该注解的方法应该在所有@Transactional注解的方法之前执行
@AfterTransaction
测试类的void方法上,指示具有该注解的方法应该在所有@Transactional注解的方法之后执行
@Sql
类级和方法级,运行Sql脚本方法上的@Sql会覆盖类级别的@Sql
@SqlConfig
同@Sql一起工作,定义了如何解析和执行SQL脚本的元数据用于类级时对该类下的所有脚本起作用
@SqlGroup
方法级,包含多个@Sql
@SpringBootTest
用于启动集成测试上下文
@DataJpaTest
用于替代@SpringBootTest进行测试JPA Repositories,测试时使用H2等内存数据库
示例
@DataMongoTest
提供最小化的自动配置和一个内置的MongoDB以进行集成测试
@WebMVCTest
主要用于controller层测试,只覆盖应用程序的controller层,HTTP请求和响应是Mock出来的,因此不会创建真正的连接。因此需要用@MockBean注解创建所需的Bean进行模拟接口调用。如果Controller层对Service层中的其他bean有依赖关系,那么需要使用Mock提供所需的依赖项。WebMvcTest要快得多,因为我们只加载了应用程序的一小部分。
@AutoConfigureMockMVC
类似于@WebMVCTest,只不过启动的是整个SpringBoot上下文
@MockBean
创建和注入一个Mockito Mock
@JsonTest
限制SpringBoot的自动化配置,以处理JSON
该注解会自动化配置出一个JacksonTester 或 GsonTester实例
@TestPropertySource
类级别,指派测试类的属性源
0 条评论
回复 删除
下一页