Spring框架注解
2021-04-02 09:56:28 2 举报
AI智能生成
Spring框架注解
作者其他创作
大纲/内容
核心注解
@Required
用在Bean的Setter方法上,表示Bean组装时必须要有该属性,否则抛出BeanInitializationExpection
@Autowired
自动导入依赖的Bean,默认byType,完成属性,方法的组装,可以对类成员变量,方法,构造函数进行标注,加上(required=false)时找不到也不报错,JSR规范中相对应的注解:JSR250 @Resource JSR330 @Inject
@Qualifier
该注解通常跟@Autowired一起使用,当想对注入的过程做更多的控制,@Qualifier可帮助配置,比如两个以上相同类型的Bean时 Spring无法抉择,用到此注解
@Configuration
等价于Spring的XML配置文件,使用Java代码可以检查类型安全。如果有些时候必须用到xml配置文件,可通过@Configuration 类作为项目的配置主类,使用@ImportResource注解加载xml 文件
@ComponentScan
一般跟@Comfiguration 一起用,来进行选择性的做一些类的扫描跟排除
@Bean
等价xml中配置的bean, 用在方法上哦,来生产出一个bean,然后交给Spring管理
@Lazy
懒加载: 主要针对单实例bean:默认在容器启动的时候创建对象用了@Lazy容器启动时候不创建对象, 仅当第一次使用(获取)bean的时候才创建被初始化可以跟@Configuration一起使用作用到类上,表示所有@Bean方法都被延时
@Value
可用在字段,构造器参数跟方法参数,指定一个默认值,支持 #{} 跟 ${} 两个方式。一般上将Springboot中的application.properties 配置的属性值
@Import
跟@Bean类似,更灵活的导入其他配置类。ImportSelector,ImportBeanDefinitionRegistrar等
@ImportResource
用来加载xml配置文件
@Resource
@Resource 默认ByName(按名字注入),若找不到对应的Bean,会继续按类型去找;但一旦指定了name,那么只会按名字去找Bean
@Inject
@Inject是Javax提供的依赖注入,效果与Autowired一样可以装配bean,不支持Primary功能,不支持Autowired false
原型注解
@Component
可以配置CommandLineRunner使用,当一个组件不好归属到下面类的时候会用该注解标注
@Controller
用在自定义的控制类,项目中一般由控制类负责处理介绍用户的URL请求,然后转发到service层,注解一般在类上,切配合@RequestMapping 使用
@Service
一般用于修饰service层的类
@Repository
可以确保DAO或repositories提供异常转译,该注解修饰的DAO或repositories 会被ComponentScan发现并配置,
SpringBoot注解
@EnableAutoConfiguration
自动配置类,尝试根据我们添加的jar依赖自动配置我们的Spring应用,也就是说pom.xml引入需要的jar后,各种配置按照约定大于配置规则自动帮我们配置好了
@SpringBootApplication
包含@ComponentScan,@Configuration,@EnableAutoconfiguration。其中@ComponentScan让SpringBoot 扫描到Configuration类丙把它加入到程序上下文
SpringCloud注解
@EnableConfigServer
配置服务器
@EnableEurekaServer
注册服务器
@EnavbleDiscoveryClient
发现客户端
@EnableCircuitBreaker
熔断器
@HystrixCommand
服务降级
缓存注解
@Cacheable
方法级
@CachePut
方法级别 更新缓存
@CacheEvict
方法级 清除缓存
@CacheCinfig
类级别配置缓存,避免多次配置
任务执行跟调度注解
@Scheduled
方法级,有该注解的方法无返回值,不接受任何参数
@Async
方法级,每个方法都单独在线程中,可以接受参数,可返回,也可不返回
测试注解
@BootstapWith
类级别,配置Spring测试上下文框架的启动
@ContextConfiguration
类级别指定配置文件
@WebAppConfiguration
类级别,指示ApplicationContext加载的集成测试环境应为WebApplicationContext
@TImed
指定测试方法执行时间,超时则失败
@Repeat
运行次数
@Commit
类级别跟方法级别 指示事务的提交
@RollBack
类级别跟方法级别 事务回滚
@DirtiesContext
类级别跟方法级别 指示ApplicationContext已修改, 重加载再测试
@BeforeTransaction
测试类void 方法上,在所有@Transactional 注解前执行
@AfterTransaction
测试类void 方法上,在所有@Transactional 注解后执行
@Sql
类级别跟方法几杯 执行SQL脚本
@SqlConfig
跟@Sql一起用,定义如何解析跟执行SQL脚本
@SqlGroup
方法级 包含多个@Sql
@SpringBootTest
启动集成测试上下文 ,底层用Junit
数据库访问注解
@Transactional
用在接口 接口中的方法 类 类中的公共方法,运行时候框架给它配置具有事务的Bean
支持一下特性
传播类型
隔离级别
操作超时
只读标记
JPA注解
@Entity
@Table
@Column
@Id
@GeneratedValue
@SequenceGeneretor
@MaooedSuperClass
@NoRepositoryBean
@Transient
SpringMVC跟REST注解
@Controller
用来定义控制器类,在Spring项目中有控制器负责接受用户通过URL发送的请求,然后将请求转发给service层,一般跟@RequestMapping 配合使用
@RestController
@Controller 跟@ResponseBody 的组合体,表示这个是控制器bean,并且是将函数的返回值直接填入到HTTP响应体,是REST风格控制器
@RequestMapping
是一个用来处理请求响应的注解,用子啊类或方法上用在类上表示所有响应请求方法都以该地址为父路径params:指定request 方法必须包含某些参数值headers:指定request中必须包含某些指定的header值,value: 指定请求的实际地址,指定的地址是URI Template 模式method: 请求方法是GET POST PUTDELETE等consumes:请求的提交内容 Content-Type application/json text/htmlproduces:指定返回内容类型,仅昂request请求头中的Accept包含该类型才返回。
@RequestMapping细分
@Getmapping
@PostMapping
@PutMapping
@PatchMapping
@DeleteMapping
@CookieValue
用于方法参数上获得cookie
@CrossOrigin
用在类跟方法上,实现跨域请求,
@ExceptionHandler
方法上 指示异常处理类
@InitBinder
初始化绑定器,用来数据绑定跟参数转换器
@Mappings@Mapping
用在字段上,Mapping 是一个Meta注解,以指示web映射注解Mappings 可用多个
@MatrixVariable
矩阵变量
@PathVariable
路径变量,获得路径上参数
@RequestAttribute
绑定请求属性到handler 方法参数
@RequestBody
指示方法参数保定到HTTp 请求的body,HttpMessageConveter 负责将HTTP请求消息转为对象
@ResponseStatus
用在方法跟异常类,以一个状态码作为指示,原因必须返回
可注解Controller,所有@RequestMapping 方法都会继承它
@SessionAttribute
用在方法参数,绑定方法参数到会话属性
@SessionAttributes
用于将会话属性Bean 封装
@Valid
验证器,配合@InitBinder使用
@ModelAttribute
把值绑定到Model中,使全局@RequestMappiing 可以获得该值
全局异常处理
@ControllerAdvice
包含@Component,可以被扫描到,统一处理异常,一般跟@ExceptionHandler一起使用
@RestControllerAdivce
@ControllerAdvice 跟@ResponseBody组合使用
0 条评论
下一页