• 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:准备响应前的缓存持续的最大时间(以秒为单位)

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

  • 相关阅读:
    Mysql查漏补缺
    RabbitMQ学习笔记
    memcache学习笔记
    Redis问题整理
    JedisCluster获取key所在的节点
    JavaSE编程题
    IDEA快捷键 日常整理
    Idea 常用快捷键列表
    【C++】 构造函数为什么不能声明为虚函数,析构函数可以
    【算法笔记】买卖股票问题--DP/贪心算法
  • 原文地址:https://www.cnblogs.com/innocenter/p/12841835.html
Copyright © 2020-2023  润新知