zoukankan      html  css  js  c++  java
  • Spring注解

    一、用于创建对象的注解

      1. 作用:和XML配置文件中编写一个<bean>标签实现的功能相同

      2. 注解

        @Component :

          作用:用于把当前对象存入 Spring 容器中

          属性:value :用于指定 bean 的 id ,若不写时,默认是当前的类名-首字母改小写

    • 以下三个注解作用和属性与Component一模一样

        @Controller :

          一般用于表现层

        @Service :

          一般用于业务层

        @Repository :

          一般用于持久层

    例子:

    1.配置bean.xml 

    2. 在类上加上注解

    3.通过注解使用此类

    二、用于注入数据的注解

      1. 作用:和XML中的bean标签写一个<property>标签的作用相同

      2. 注解(以下前三个注解都只能注入bean 类型的数据,基本类型和String 类型无法使用。集合类型的注入只能通过 XML 实现)

        @Autowired :

          作用:自动按照类注入。只要容器中有唯一的一个 bean 对象类型和要注入的变量类型匹配(即例子的 IAccountDao),就可以注入成功

             若有两个 bean 对象匹配,则会根据注解下创建的 对象 去匹配(即例子的accountDao),对象匹配不对就会报错

             若一个 bean 都没有匹配到,报错

          出现位置:可以写在变量上,可以写在方法上

          注意:在使用此注解注入时,set 方法就不是必须的了

        @Qualifier :

          作用:在按照类中注入的基础上,再按照名称注入。

          属性:value :用于指定注入 bean 的 id 

          注意:必须和 @AutoWired 配合使用

        @Resource :

          作用:直接按照 bean 的 id 注入,它可以独立使用

          属性:name :用于指定 bean 的 id

        @Value :

          作用:用于注入基本类型和 String 类型的数据

          属性:value :用于指定数据的值。

          注意:它可以使用 Spring 中的 SpEl(也就是Spring的 el 表达式即:${ 表达式 })

    例子:

    现在容器里有的对象:

     

    又来一个DAO实现类

    1. 注解标后,先按照IAccountDao 这个类型去容器里找是否有这个对象

     

     2. 在容器里找到了(跳过 key 直接找value)

     

    三、用于改变作用范围的注解

      1. 作用:和在bean标签中使用scope属性实现的功能相同

      2. 注解

        @Scope :

          作用:用于指定 bean 的作用范围

          属性:value:指定范围的取值,常用取值:singleton(单例对象,每次创建新对象) / prototype

    例子:

    四、生命周期相关的注解

      1. 作用:和在bean标签中使用 init-method 和 destroy-method 的作用相同

      2. 注解

        @PreDestroy

          作用:用于指定销毁方法

        @PostConstruct

          作用:用于指定初始化方法

    例子:

    五、新注解

    @Configuration

      作用:指定当前类是一个配置类,作用和 bean.xml 一样

      注意:当配置类作为 AnnotationConfigApplicationContext 对象创建的参数时,该注解可省略不写

    @ComponentScan

      作用:通过注解指定 Spring 再创建容器时要扫描的包

      属性:value / basePackages :指定创建容器时要扫描的包名。这两个属性作用一样。数组类型

      使用此注解等同于在XML里配置了<context : component-scan  base-package="XXX.XXX"></context : component-scan>

    @Bean

      作用:用于把当前方法的返回值作为 bean 对象存入 Spring 的 IOC 容器中

      属性:name:用于指定 bean 的 id,当不写时默认值是当前方法的名称

      注意:若方法有参数,Spring 框架会去容器中查找有没有可用的 bean对象,查找方法和 AutoWired 相同

    例子:

    以上:加上@Bean 注解后,就相当于在配置里加上了<bean>标签

     测试是否单例的例子:

     配置如下:配置Scope(prototype)后是单例了

     

    对比component和controller:https://www.cnblogs.com/javaboy2018/p/9039501.html

  • 相关阅读:
    zoj 1239 Hanoi Tower Troubles Again!
    zoj 1221 Risk
    uva 10192 Vacation
    uva 10066 The Twin Towers
    uva 531 Compromise
    uva 103 Stacking Boxes
    稳定婚姻模型
    Ants UVA
    Golden Tiger Claw UVA
    关于upper、lower bound 的探讨
  • 原文地址:https://www.cnblogs.com/xuzhongyin/p/12973333.html
Copyright © 2011-2022 走看看