上一篇文章我们讲了模块装配,接下来我们讲述一下条件装配
什么是条件装配?
Bean装配的前置判断
有哪些例子?
@Profile(配置化条件装配) @Conditional(编程条件装配)
有哪些实现方式?
注解方式,接口方式
@Profile在Spring3.0时代出现的,使用方式就是在类上面加上@Profile(XXX),如果我们在SpringBoot启动的时候使用了.profiles("XXX"),那么这个类就会被装配进来。在4.0时代,发生了变化,Profile有了@Conditional这个注解。
上面讲的很抽象,我们还是用具体的例子来帮助大家理解一下:
首先看看@Profile的使用:
我们假设有这么一个场景,声明一个接口CalculateService,这个接口中只有一个方法sum(),如下:
[code]public interface CalculateService {
/**
* 从多个整数 sum 求和
* @param values 多个整数
* @return sum 累加值
*/
Integer sum(Integer... values);
}
如果profile为java8时,我们采用lambda表达式来实现这个接口,并调用这个实现类的sum方法求和,如果profile为java7是,我们采用传统的方式来实现这个接口,并调用这个实现类的sum方法求和。
我们先看看Java7CalculateService的实现
[code]@Profile("Java7")
@Service
public class Java7CalculateService implements CalculateService {
@Override
public Integer sum(Integer... values) {
System.out.println("Java 7 for 循环实现 ");
int sum = 0;
for (int i = 0; i < values.length; i++) {
sum += values[i];
}