1.声明bean的注解

  @Component 组件,没有明确的角色

  @Service 在业务逻辑层使用(service层)

  @Repository 在数据访问层使用(dao层)

  @Controller 在展现层使用,控制器的声明(C)

2.注入bean的注解

  @Autowired:由Spring提供

  @Inject:由JSR-330提供

  @Resource:由JSR-250提供

  都可以注解在set方法和属性上,推荐注解在属性上(一目了然,少写代码)。

3.java配置类相关注解

  @Configuration 声明当前类为配置类,相当于xml形式的Spring配置(类上)

  @Bean 注解在方法上,声明当前方法的返回值为一个bean,替代xml中的方式(方法上)

  @Configuration 声明当前类为配置类,其中内部组合了@Component注解,表明这个类是一个bean(类上)

  @ComponentScan 用于对Component进行扫描,相当于xml中的(类上)

  @WishlyConfiguration 为@Configuration与@ComponentScan的组合注解,可以替代这两个注解

4.切面(AOP)相关注解

  Spring支持AspectJ的注解式切面编程。

  @Aspect 声明一个切面(类上) 
使用@After、@Before、@Around定义建言(advice),可直接将拦截规则(切点)作为参数。

  @After 在方法执行之后执行(方法上) 
  @Before 在方法执行之前执行(方法上) 
  @Around 在方法执行之前与之后执行(方法上)

  @PointCut 声明切点 
在java配置类中使用@EnableAspectJAutoProxy注解开启Spring对AspectJ代理的支持(类上)

5.@Bean的属性支持

  @Scope 设置Spring容器如何新建Bean实例(方法上,得有@Bean) 
  其设置类型包括:

  Singleton (单例,一个Spring容器中只有一个bean实例,默认模式), 
  Protetype (每次调用新建一个bean), 
  Request (web项目中,给每个http request新建一个bean), 
  Session (web项目中,给每个http session新建一个bean), 
  GlobalSession(给每一个 global http session新建一个Bean实例)

  @StepScope 在Spring Batch中还有涉及

  @PostConstruct 由JSR-250提供,在构造函数执行完之后执行,等价于xml配置文件中bean的initMethod

  @PreDestory 由JSR-250提供,在Bean销毁之前执行,等价于xml配置文件中bean的destroyMethod

6.@Value注解

  @Value 为属性注入值(属性上) 
  支持如下方式的注入: 
  》注入普通字符

    @Value("Michael Jackson")String name;

  》注入操作系统属性

    @Value("#{systemProperties['os.name']}")String osName;

  》注入表达式结果

    @Value("#{ T(java.lang.Math).random() * 100 }") String randomNumber;

  》注入其它bean属性

    @Value("#{domeClass.name}")String name;

  》注入文件资源

    @Value("classpath:com/hgs/hello/test.txt")String Resource file;

  》注入网站资源

    @Value("http://www.javastack.cn")Resource url;

  》注入配置文件

    Value("${book.name}")String bookName;

  注入配置使用方法: 
  ① 编写配置文件(test.properties)

    book.name=《三体》

  ② @PropertySource 加载配置文件(类上)

    @PropertySource("classpath:com/hgs/hello/test/test.propertie")

  ③ 还需配置一个PropertySourcesPlaceholderConfigurer的bean。

7.环境切换

  @Profile 通过设定Environment的ActiveProfiles来设定当前context需要使用的配置环境。(类或方法上)

  @Conditional Spring4中可以使用此注解定义条件话的bean,通过实现Condition接口,并重写matches方法,从而决定该bean是否被实例化。(方法上)

8.异步相关

  @EnableAsync 配置类中,通过此注解开启对异步任务的支持,叙事性AsyncConfigurer接口(类上),点击这里了解使用详情。

  @Async 在实际执行的bean方法使用该注解来申明其是一个异步任务(方法上或类上所有的方法都将异步,需要@EnableAsync开启异步任务)

9.定时任务相关

  @EnableScheduling 在配置类上使用,开启计划任务的支持(类上)

  @Scheduled 来申明这是一个任务,包括cron,fixDelay,fixRate等类型(方法上,需先开启计划任务的支持)

10.@Enable*注解说明

这些注解主要用来开启对xxx的支持。 
  @EnableAspectJAutoProxy 开启对AspectJ自动代理的支持

  @EnableAsync 开启异步方法的支持

  @EnableScheduling 开启计划任务的支持

  @EnableWebMvc 开启Web MVC的配置支持

  @EnableConfigurationProperties 开启对@ConfigurationProperties注解配置Bean的支持

  @EnableJpaRepositories 开启对SpringData JPA Repository的支持

  @EnableTransactionManagement 开启注解式事务的支持

  @EnableTransactionManagement 开启注解式事务的支持

  @EnableCaching 开启注解式的缓存支持

11.测试相关注解

  @RunWith 运行器,Spring中通常用于对JUnit的支持

  @RunWith(SpringJUnit4ClassRunner.class)

  @ContextConfiguration 用来加载配置ApplicationContext,其中classes属性用来加载配置类

  @ContextConfiguration(classes={TestConfig.class})

12.SpringMVC相关注解

  @EnableWebMvc 在配置类中开启Web MVC的配置支持,如一些ViewResolver或者MessageConverter等,若无此句,重写WebMvcConfigurerAdapter方法(用于对SpringMVC的配置)。

  @Controller 声明该类为SpringMVC中的Controller

  @RequestMapping 用于映射Web请求,包括访问路径和参数(类或方法上)

  @ResponseBody 支持将返回值放在response内,而不是一个页面,通常用户返回json数据(返回值旁或方法上)

  @RequestBody 允许request的参数在request体中,而不是在直接连接在地址后面。(放在参数前)

  @PathVariable 用于接收路径参数,比如@RequestMapping(“/hello/{name}”)申明的路径,将注解放在参数中前,即可获取该值,通常作为Restful的接口实现方法。

  @RestController 该注解为一个组合注解,相当于@Controller和@ResponseBody的组合,注解在类上,意味着,该Controller的所有方法都默认加上了@ResponseBody。

  @ControllerAdvice 通过该注解,我们可以将对于控制器的全局配置放置在同一个位置,注解了@Controller的类的方法可使用@ExceptionHandler、@InitBinder、@ModelAttribute注解到方法上, 
这对所有注解了 @RequestMapping的控制器内的方法有效。

  @ExceptionHandler 用于全局处理控制器里的异常

  @InitBinder 用来设置WebDataBinder,WebDataBinder用来自动绑定前台请求参数到Model中。

  @ModelAttribute 本来的作用是绑定键值对到Model里,在@ControllerAdvice中是让全局的@RequestMapping都能获得在此处设置的键值对。

Spring 12 种 常用注解!的更多相关文章

  1. Spring中的常用注解

    Spring中的常用注解 1.@Controller 标识一个该类是Spring MVC controller处理器,用来创建处理http请求的对象.

  2. Spring 和 SpringMVC 常用注解和配置(@Autowired、@Resource、@Component、@Repository、@Service、@Controller的区别)

    Spring 常用注解 总结内容 一.Spring部分 1.声明bean的注解 2.注入bean的注解 3.java配置类相关注解 4.切面(AOP)相关注解 5.事务注解 6.@Bean的属性支持 ...

  3. spring 以及 spring mvc 中常用注解整理

    spring 以及 spring mvc 中常用注解整理 @RequestMapping(映射路径) @Autowired(注入 bean 对象) 例如: @Autowired private Bas ...

  4. Spring MVC的常用注解(一)

    概述 Spring从2.5版本开始引入注解,虽然版本不断变化,但是注解的特性一直被延续下来并不断进行扩展,这里就来记录一下Spring MVC中常用的注解,本文记录@Controller.@Reque ...

  5. spring boot 的常用注解使用 总结

    附:Spring Boot 官方文档学习(一)入门及使用见https://www.cnblogs.com/larryzeal/p/5799195.html @RestController和@Reque ...

  6. spring boot 的常用注解

    SpringBoot用于简化Spring应用的搭建,开发及部署:该框架采用注解的方式进行配置可以很方便的构建Spring应用. 1. @SpringBootApplication @SpringBoo ...

  7. spring和springboot常用注解总结

    @ConfigurationProperties 可以非常方便的把资源文件中的内容绑定到对象上   @Value("${app.name}") 注入简单值 @Import 通过导入 ...

  8. Spring学习之常用注解(转)

    使用注解来构造IoC容器 用注解来向Spring容器注册Bean.需要在applicationContext.xml中注册<context:component-scan base-package ...

  9. Spring Data JPA 常用注解 @Query、@NamedQuery

    1.@Transient @Transient表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性:如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则ORM框架 ...

随机推荐

  1. Docker应用场景

    Docker的应用场景 Web 应用的自动化打包和发布. 自动化测试和持续集成.发布. 在服务型环境中部署和调整数据库或其他的后台应用. 从头编译或者扩展现有的OpenShift或Cloud Foun ...

  2. Spring Boot + Spring Cloud 构建微服务系统(十):配置中心(Spring Cloud Bus)

    技术背景 我们在上一篇讲到,Spring Boot程序只在启动的时候加载配置文件信息,这样在GIT仓库配置修改之后,虽然配置中心服务器能够读取最新的提交信息,但是配置中心客户端却不会重新读取,以至于不 ...

  3. 配置文件热加载的go语言实现

    通常我们更新应用程序的配置文件,都需要手动重启程序或手动重新加载配置.假设一组服务部署在10台机器上,你需要借助批量运维工具执行重启命令,而且10台同时重启可能还会造成服务短暂不可用.要是更新配置后, ...

  4. springboot aop 自定义注解方式实现完善日志记录(完整源码)

    版权声明:本文为博主原创文章,欢迎转载,转载请注明作者.原文超链接 一:功能简介 本文主要记录如何使用aop切面的方式来实现日志记录功能. 主要记录的信息有: 操作人,方法名,参数,运行时间,操作类型 ...

  5. FFmpeg流媒体处理-收流与推流

    本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10623968.html 1. 简介 流媒体是使用了流式传输的多媒体应用技术.如下是维基百 ...

  6. MySQL基准测试(一)--原因,策略,思路

    MySQL基准测试(一)--原因,策略,思路 运用benchmark的原因 验证一些你认为的问题,通过基准测试和模拟数据来验证. 解决生产系统的一些异常 测试系统的当前的运行情况,通过历史的基准测试结 ...

  7. 以前没有写笔记的习惯,现在慢慢的发现及时总结是多么的重要。 这一篇文章主要关于java多线程一些常见的疑惑点。因为讲解多线程的书籍和文章已经很多了,所以我也不好意思多说,嘻嘻嘻、大家可以去参考一些那些书籍。我这个文章主要关于实际的一些问题。同时也算是我以后复习的资料吧,。还请大家多多指教。 同时希望多结交一些技术上的朋友。谢谢。

    在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口. 以下就是我们常见的问题了: 1. 为什么我们不能直接调用run()方法呢? 我的理解是:线程的运行 ...

  8. [PHP] 算法-二叉树的子结构判断的PHP实现

    输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 1.子树的意思是包含了一个节点,就得包含这个节点下的所有节点,两棵树同时到底 2.子结构可以是A树的任意一部 ...

  9. CentOS配置VSFTP服务

    1.安装vsftpd a.查看是否安装vsftp [root@wsyjlly ~]# rpm -q vsftpd package vsftpd is not installed b.如果没有则安装vs ...

  10. Java集合框架——容器的快速报错机制 fail-fast 是什么?

    前言:最近看 java 集合方面的源码,了解到集合使用了 fail-fast 的机制,这里就记录一下这个机制是什么,有什么用,如何实现的. 一.fail-fast 简介 fail-fast 机制,即快 ...