介绍
- @Priority与@Order类似,@Order是Spring提供的注解,@Priority是JSR 250标准,都是值越小优先级越高;
- 与@Order不同,@Priority可以控制组件的加载顺序,因此@Priority侧重于单个注入的优先级排序;
- @Priority优先级比@Order更高,两者共存时优先加载@Priority;
- @Primary是优先级最高的,如果同时有@Primary、@Order、Ordered的话,@Primary注解的Bean会优先加;。
使用
public interface StockService {
}
@Component
@Order(1)
@Priority(2)
public class StockServiceImpl1 implements StockService {
}
@Component
@Order(2)
@Priority(1)
public class StockServiceImpl2 implements StockService {
}
@Component
public class OrderService {
@Autowired
StockService stockService;
public void pay() {
System.out.println(stockService + " is created");
}
}
public class Test {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
OrderService o2 = (OrderService) context.getBean("orderService");
o2.pay();
}
}
打印结果:
com.sonnie.annotest.StockServiceImpl2@4141d797 is created