zoukankan      html  css  js  c++  java
  • spring @Bean和@Order 官方doc理解

    今天阅读了spring的官方代码,(大概)理解了@Bean和@Order如何使用。

    @Bean 官方代码解读:

    0、@Bean的注入,用于表示这个bean被spring容器管理(创建、销毁)(官方英文:Indicates that a method produces a bean to be managed by the Spring container.

    )。

    1、如果有相同的bean,需要在每个bean上加上@Qualify 注解

    2、单例的bean不受@Order注解影响,只会受其本身的bean依赖关系和依赖的影响

    3、@Configuration 不能用final 和static修饰,因为这些最初的spring JavaConfig要求CGLIB在运行时对每个Config进行子类化

    4、bean默认模式下,是通过注解来自动注入的。但是允许外部条件的注入,如name还有type

    5、@Bean用于ApplicationContext,JDBC,SqlSession 的close方法的时候,close方法必须是公有并且没有参数的,这个close()可能会抛出异常,需要try catch

    6、禁用一个Bean的destroy()(销毁)方法,可以声明其value为"",空字符串。org.springframework.beans.factory.DisposableBean 会检查和校验destroy()的调用。换而言之,value为""的destroy方法,只会影响自定义的close()、shutdown()、java.io.Closeable、java.lang.AutoCloseable 声明的close(),比如在继承java.io.Closeable、java.lang.AutoCloseable后的重载close()。 注意销毁的方法只在那些生命周期完全由工厂掌握(包括但不限于单例模式)下才会被执行。

    @Order 解读。

    1、@Order 是一个可选择的,代表接口的排序值。越低的数值代表越高的等级。默认值是最大的值,也就是Integer.Max_VALUE=0x7fffffff

    2、从spring 4.0开始,@Order 可以支持多种组件,包括集合中的组件注入。@Order 将会影响注入点的顺序。换句话说,也就是影响组件的注入顺序。但是@Order不影响单例的bean,单例的bean只受依赖关系和依赖的影响。(@Bean也是不影响单例的bean)

    以上就是我的对官方源码的解读。本人是.NET转java的新人,如果有错,请各位大牛指出。

  • 相关阅读:
    【软件工程】第0次个人作业
    【面向对象设计与构造】第四次博客作业
    【面向对象设计与构造】第三次博客作业
    【面向对象设计与构造】第二次博客作业
    【面向对象设计与构造】第一次博客作业
    软件工程提问回顾与个人总结
    软件工程结对项目博客作业
    软件工程第一次阅读作业
    软件工程第0次个人作业
    面向对象设计与构造第四次总结作业
  • 原文地址:https://www.cnblogs.com/drafire/p/9278493.html
Copyright © 2011-2022 走看看