常用注解
spring常用注解
- 元注解
- @Target 描述注解的使用位置
- TYPE 类、接口、枚举
- FIELD 属性
- METHOD 方法等
- @Retention 描述注解保留的时间范围(类似于注解的生命周期)
- RUNTIME 运行时保留,可通过反射获取注解信息
- CLASS 编译时保留 默认
- SOURCE 源文件保留
- @Inherited 使被它修饰的注解具有继承性
- @Documented描述在使用 javadoc 工具为类生成帮助文档时是否要保留其注解信息
- 声明Bean的注解
- @Compnent
- @Controller 控制层
- @Service 业务层
- @Repository 数据访问层
- 注入bean的注解
- @Autowired 默认按照类型匹配,@Autowired如果需要按照名称匹配需要和@Qualifier一起使用
- @Qualifier 当有多个同一类型的Bean时,可以用@Qualifier(“name”)来指定。与@Autowired配合使用。@Qualifier限定描述符除了能根据名字进行注入,但能进行更细粒度的控制如何选择候选者,
- @Resource 按照名称匹配的
- Java配置类相关注解
- @Configuration 声明当前类为配置类
- @Bean 注解在方法上,声明当前方法的返回值为bean,
- Singleton 单例。一个spring容器之中只有一个bean实例。默认
- Protetype 每次调用新建一个bean
- Request web项目中,给每个http request新建一个bean
- Session web项目中,给每个http session新建一个bean
- GlobalSession 给每一个 global http session新建一个Bean实例
- @ComponentScan 用于对@Component的扫描
- 切面AOP的相关注解
- @Aspect 声明一个切面
- @PointCut 声明切点
- @After 在方法执行之后执行
- @Before 在方法执行之前执行(方法上)
- @Around 在方法执行之前与之后执行(方法上)
- 在java配置类中使用@EnableAspectJAutoProxy注解开启Spring对AspectJ代理的支持
- @Value
- 注入普通字符 @Value("normal")
- 注入操作系统属性 @Value("#{systemProperties['os.name']}")
- 注入表达式结果 @Value("#{ T(java.lang.Math).random() * 100.0 }")
- 注入其它bean属性 @Value("#{beanInject.another}") // 注入其他Bean属性:注入beanInject对象的属性another,类具体定义见下面
- 注入文件资源 @Value("classpath:com/hry/spring/configinject/config.txt")
- 注入网站资源 @Value("http://www.baidu.com")
- 注入配置文件
- 环境切换
- @Profile 指定组件在哪个环境的情况下才能被注册到容器,不指定的话任何环境
- @Conditional 通过实现condition重写matches方法,从而决定该Bean是否被实例化
- 定时任务相关
- @EnableScheduling 在配置类上使用,开启计划任务的支持
- @Scheduled 来申明这是一个任务。包括cron、fixDelay,fixRate等类型(方法上,需先开启计划任务的支持)
- EnableXXX 主要是用来开启对xxx的支持
- @EnableAspectAutoProxy:开启对AspectJ自动代理的支持
- @EnableAsync:开启异步方法的支持;
- @EnableScheduling:开启计划任务的支持;
- @EnableWebMvc:开启web MVC的配置支持;
- @EnableConfigurationProperties:开启对@ConfigurationProperties注解配置Bean的支持;
- @EnableJpaRepositories:开启对SpringData JPA Repository的支持;
- @EnableTransactionManagement:开启注解式事务的支持;
- @EnableCaching:开启注解式的缓存支持;
- 测试相关注解
- @RunWith 运行器,spring对Junit的支持
- @ContextConfiguration 用来加载配置文件其中classes用来加载配置类
- @ContextConfiguration这个注解通常与@RunWith(SpringJUnit4ClassRunner.class)联合使用用来测试
- @ContextConfiguration括号里的locations = {"classpath*:/*.xml"}就表示将classpath路径里所有的xml文件都包括进来,自动扫描的bean就可以拿到,此时就可以在测试类中使用@Autowired注解来获取之前自动扫描包下的所有bean
SpringMVC常用注解
- @EnableWebMvc 在配置类中开启对webMvc的支持
- @RequestMapping 用于映射web请求,包括路径和参数
- params 指定request中包含某些参数值,才让方法进行处理
- headers 指定request中必须包含某些指定的header值,才能让该方法处理请求
- value 指定请求的实际地址
- method GET、POST、PUT、DELETE
- consumers 指定处理请求的提交内容类型(Content-Type),如application/json,text/html;
- produces 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回
- @ResponseBody 支持将返回值放到response中,通常返回json数据
- @RequestBody 支持request的参数在request体内,而不是直接连接在地址后面
- @PathVariable 用于接收路径参数,@RequestMapping(“/hello/{name}”)声明的路径,将注解放在参数前,即可获取该值,通常作为Restful的接口实现方法。
- @RestController @Controller和@ResponseBody的组合
- @InitBinder 用来设置webDataBinder,自动绑定前台参数到model中
- ModelAttribute 绑定键值对到model中。在@controllerAdvice中让全局的requestMapping都能获取到此处设置的键值对
Springboot常用注解
- @SpringBootApplication 包含了@ComponentScan、@Configuration、@EnableAutoConfiguration
- @ComponentScan 组件扫描,可自动发现和装配一些Bean
- @Configuration 等同于bean的XML配置文件
- @EnableAutoConfiguration 自动配置。
- @import 用来导入其他配置类
- @ImportResource 用来加载xml的配置文件
全局异常 处理
- @ControllerAdvice 包含@Component,可以被扫描到。统一处理异常。常用场景
- 全局异常处理
- 全局数据绑定
- 全局数据预处理
- @ExceptionHandler(Exception.class) 用于全局处理控制器里的异常,用在方法上面表示遇到这个异常就执行以下方法