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

  • 相关阅读:
    java基础
    Java开发环境搭建
    打开CMD的方式和常用的Dos命令
    电脑常用快捷键
    Markdown学习
    c# json object Dictionary互转
    dapper 跨表查询
    Dapper SimpleCRUD Demo
    c#中的常用ToString()方法总结
    android js 模拟键盘
  • 原文地址:https://www.cnblogs.com/xuzhongyin/p/12973333.html
Copyright © 2011-2022 走看看