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

 

posted @ 2019-05-21 16:02  xiaobai1202  阅读(278)  评论(0编辑  收藏  举报