zoukankan      html  css  js  c++  java
  • Spring常用注解及使用

    1. 为什么要使用注解

        如果大家用过基于XML方式配置的Spring就会发现,虽然基于XML的配置方式比较方便,但还是要理清全部的依赖关系之后才能进行配置,否则就要不断地修改配置文件,而且如果实例较多的话也不是很方便管理。

        好在Spring在2.5版本提供了基于注解的配置方式,我们基本可以抛弃XML配置文件,只需要在类中使用注解进行配置即可,大大简化了配置方式。同时,我们也不需要先理清依赖关系再进行配置了,在需要的时候直接

        使用注解进行依赖注入即可。下面,就是Spring中常用的注解及使用方式

    2.如何使用注解

        既然注解这么简单,那么该怎么使用注解呢? 别急,只需要以下几步就可以使用注解驱动了:

        首先我们要先区分以下两个xml配置项的区别: 

    <context:annotation-config> 和 <context:component-scan>的区别

    <context:annotation-config> 是用于激活那些已经在spring容器里注册过的bean(无论是通过xml的方式还是通过package sanning的方式)上面的注解。

    <context:component-scan>除了具有<context:annotation-config>的功能之外,<context:component-scan>还可以在指定的package下扫描以及注册javabean 。

        所以综上所述,我们这里使用 <context:component-scan> 

        具体的使用步骤:

        1.在类路径下新建配置文件 Application.xml 并导入约束,然后配置 <context:component-scan>

        component-scan 的一个属性 base-package 指定需要Spring扫描哪个包及其子包

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns="http://www.springframework.org/schema/beans"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/aop
            http://www.springframework.org/schema/aop/spring-aop.xsd">
            <!-- 这句话是用来配置注解扫描用的 base-pcakage 指定的是扫描路径 会扫描该路径及路径下所有的子包 -->
            <context:component-scan base-package="com.xiaobai.testanno"/>
    </beans>

          好了,到这里我们的配置文件就配置好了,怎么样!简单吧!

          然后我们就直接在包下面的类上打上相应的注解就可以使用了!,下面我们介绍一些常用的注解

    3. 一些常用的注解:

        3.1  @Required

            该注解标注在一个set方法上,表示该属性必须要注入 在5.1版本已经废弃

        3.2 @Value 

            该注解标注在属性上,用于给指定的属性设置一个值(类似于xml 的property )

            当该注解标注在方法上时,就是为参数设定值

        3.3 @Autowired

            该注解标注在属性上,用于对指定的属性进行依赖注入(类似于 xml 的 property 的 ref 属性)

            当该注解标注在方法上时,就是为方法的参数设定值。

        3.4 @Component

            该注解标注在类上,用于向Spring说明该类应该作为一个组件保存在IOC 容器中(类似于xml的 bean)

            与此注解相似的还有 @Controller @Service @Repository 功能都是讲类实例化后交给Spring来管理,只是@Controller可以直观的看出这是一个mvc中的controller类,service、repository同理。

        3.5 @Qualifier

            该注解用于指定注入bean的名称,当容器中有多个实现同一接口的实例或一个实例在容器中是prototype的时候,Spring自动注入并不能确定到底注入哪一个,这时就需要该注解指定一下名称。

        3.6@Resource

            说一下@Resource的装配顺序:
              (1)、@Resource后面没有任何内容,默认通过name属性去匹配bean,找不到再按type去匹配
              (2)、指定了name或者type则根据指定的类型去匹配bean
              (3)、指定了name和type则根据指定的name和type去匹配bean,任何一个不匹配都将报错

            该注解与@Autowired注解功能相类似,不过还是有一些区别的:

              区别一:@Autowired 默认是以byType方式进行注入的,而@Resource默认是以byName的方式进行注入的。

              区别二:@AutoWired 是Spring的注解而@Resource是J2EE的注解。

        3.7@Configuration

            表示这是一个配置类,该类中所有标有@Bean的方法的返回值都将被放入IOC容器中作为一个组件

        3.8@Bean

            标注在方法上,表示该方法返回的值要作为一个组件交给IOC容器管理

        3.9 @Primary

            自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常

        3.10 Spring MVC 注解

          @RequestMapping  路由映射地址  @RequestBody 请求参数使用json 进行映射 @RequestParam 请求参数名称  @PathVarible RestFull请求路径参数 

          @ResopnseBody 返回值采用json格式  @RestController 表示该Controller中所有的方法全部是json返回  

     

    4. 几篇比较好的参考博客(尊重原创)

        4.1    https://www.cnblogs.com/xiaoxi/p/5935009.html

        4.2    https://www.cnblogs.com/xingzc/p/5777814.html

        4.3   https://blog.csdn.net/u010648555/article/details/76299467

  • 相关阅读:
    free命令查看内存使用情况(转载)
    php生成随机密码(php自定义函数)转自先锋教程网
    php随机密码函数的实例代码
    php高级面试题知识点(转载)
    php经典面试题与答案(转先锋教程网)
    react-native run-ios “Could not find iPhone X simulator”
    记录CentOS 7.4 上安装MySQL&MariaDB&Redis&Mongodb
    asp.net core webapi/website+Azure DevOps+GitHub+Docker
    从头认识一下docker-附带asp.net core程序的docker化部署
    [aspnetcore.apidoc]一款很不错的api文档生成工具
  • 原文地址:https://www.cnblogs.com/xiaobai1202/p/10900348.html
Copyright © 2011-2022 走看看