spring一些注解的使用及相关注解差异

最近项目联调完毕,等待上线,闲来无事,整理一波spring的注解

一.声明bean的注解

  1.  @Controller 在展现层使用,控制器的声明(controller层);此处与@RestController注解有点差异,@RestController相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面,使用@Controller 注解,在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面若返回json等内容到页面,则需要加@ResponseBody注解
  2. @Service 在业务逻辑层使用(service层);
  3. @Repository 在数据访问层使用(dao层);

二.注入bean的注解

  1. @Autowired:由Spring提供,@Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用

  2.  @Inject:由JSR-330提供

  3. @Resource:由JSR-250提供;@Resource装配顺序;如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常,如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常,如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常,如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配;

  4. @Component 组件,没有明确的角色,但是当我在实现类中用到了@Autowired注解,被注解的这个类是从Spring容器中取出来的,那调用的实现类也需要被Spring容器管理,加上@Component  

三.其他常用注解

  1. @RequestMapping:提供路由信息,负责URL到Controller中的具体函数的映射;
  2. @ComponentScan:表示将该类自动发现扫描组件。个人理解相当于,如果扫描到有@Component、@Controller、@Service等这些注解的类,并注册为Bean,可以自动收集所有的Spring组件,包括@Configuration类;
  3. @Configuration:相当于传统的xml配置文件,如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类——可以使用@ImportResource注解加载xml配置文件;
  4. @Bean:用@Bean标注方法等价于XML中配置的bean;
  5. @Value:注入Springboot  application.properties/yml配置的属性的值;
  6. @RequestBody:接收前台传到后台的对象参数 bean对象或者map,jsonObject等;
  7. @RequestParam:接收前台传到后台的参数 form表单形式;
  8. @Transactiona:事务处理,详细使用参研事务隔离级别;
  9. @CrossOrigin;在controller上加@CrossOrigin(origins = "http://xxx.com", maxAge = 3600);

    origins  : 允许可访问的域列表

    maxAge:准备响应前的缓存持续的最大时间(以秒为单位)

常用的注解也就这么多了,后面有补充再加进来!

原文地址:https://www.cnblogs.com/innocenter/p/12841835.html