Spring面试题之如何控制Bean初始化顺序
2017-12-19 15:29
393 查看
IT那些年那些事 2017-11-17 13:53:53
问题:如何在Spring中控制Bean初始化先后顺序?
从Spring 2.0出现后,Spring提供@Order注解来定义了组件的加载顺序。
@Order定义
@Retention(value=RUNTIME)@Target(value={TYPE,METHOD,FIELD})@Documented public @interface Order
这个标记包含一个value属性,类型是整型,如:1,2 等等。值越小拥有越高的优先级。
默认的属性是Ordered.LOWEST_PRECEDENCE,
代表的是最低优先级。
通过代码可以发现最大值和最小值的定义就是Inger的最大值和最小值。
简单举例
Ranks.java
RankOne.java
RankTwo.java
RankThree.java
Results.java
beans.xml
RanksClient.java
运行输出:
[RankOne, RankThree, RankTwo]
修改RankTwo代码:
@Component@Order(1)
public class RankTwo implements Ranks{ //Same code as given above}
运行输出:
[RankTwo,RankOne, RankThree]
问题:如何在Spring中控制Bean初始化先后顺序?
从Spring 2.0出现后,Spring提供@Order注解来定义了组件的加载顺序。
@Order定义
@Retention(value=RUNTIME)@Target(value={TYPE,METHOD,FIELD})@Documented public @interface Order
这个标记包含一个value属性,类型是整型,如:1,2 等等。值越小拥有越高的优先级。
默认的属性是Ordered.LOWEST_PRECEDENCE,
代表的是最低优先级。
通过代码可以发现最大值和最小值的定义就是Inger的最大值和最小值。
简单举例
Ranks.java
RankOne.java
RankTwo.java
RankThree.java
Results.java
beans.xml
RanksClient.java
运行输出:
[RankOne, RankThree, RankTwo]
修改RankTwo代码:
@Component@Order(1)
public class RankTwo implements Ranks{ //Same code as given above}
运行输出:
[RankTwo,RankOne, RankThree]
相关文章推荐
- 详解Spring 中如何控制2个bean中的初始化顺序
- 做一个合格的程序猿之浅析Spring IoC源码(十)Spring Bean的初始化顺序
- spring初始化bean的顺序
- Spring容器中的Bean几种初始化方法和销毁方法的先后顺序
- Spring初始化Bean的顺序
- Spring容器中的Bean几种初始化方法和销毁方法的先后顺序
- Spring容器中的Bean几种初始化方法和销毁方法的先后顺序
- 如何告诉spring初始化指定配置文件中的javabean
- 浅析Spring IoC源码(十)Spring Bean的初始化顺序
- Spring-Bean初始化顺序
- 使用Spring @DependsOn控制bean加载顺序
- Spring容器中的Bean几种初始化方法和销毁方法的先后顺序
- 关于spring加载applicationContext初始化bean顺序的问题
- Spring容器中的Bean几种初始化方法和销毁方法的先后顺序
- Spring中Bean的初始化顺序
- Spring容器中的Bean几种初始化方法和销毁方法的先后顺序
- Spring-Bean初始化顺序
- Spring容器中的Bean几种初始化方法和销毁方法的先后顺序
- Spring如何实现初始化完Bean调用指…
- spring bean初始化顺序