1、自动配置的实现是基于spring 4.0的条件化配置,这是spring 4.0的新特性。比如,定义一个类A,它实现Condition接口,覆盖condition接口的match()方法,那么该类变成一个条件类。我们可以在某个方法上使用这个类时,在方法上使用注解@Conditional(A.class),表明当A类的条件成立时,方法才会被执行。
public class A implements Condition{ @Override public boolean match(ConditionContext context, AnnotationTypeMetadata metadata) { //do something.... return true; } } @Conditional(A.class) public void oneService (){}
2、自定义配置属性:为不同的环境配置不同的属性,spring boot的实现基于spring 3.1的Profile配置,Profile是一种条件化配置。spring boot通过注解@Profile("???")和配置文件application.properties的形式来实现。我们需要在配置文件中配置这么一行:spring.profile.active=???,这行配置能激活Profile,那么就可以使用注解了@Profile的配置类。
另外spring boot中还可以通过命名配置文件的名字来区分不同的环境以达到为不同的环境配置不同的属性。首先需要遵循命名规则:application-{profileName}.properties,如果使用的是yml文件,类似的规则是:application-{profileName}.yml;使用yml文件也可以把profile配置在一个文件内,用一组三个连字符(---)分隔开,分成不同的部分,像这样:
x: y: z: xyz --- spring: profiles: dev x2: y2: z2: x2y2z2 --- spring: profiles: prod x3: y3: z3: x3y3z3