Spring4中提供了一种更通用的条件创建Bean的方式,即使用@Conditional注解。
示例:
通过在配置文件中修改ifCreate的值,来控制某个Bean的创建。
(1)创建一个实现了Condition接口的类,实现matches方法,在matches方法返回的结果决定了Bean是否被创建。
package learnspring.learnspring.conditional;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.type.AnnotatedTypeMetadata;
/**
 * @author 肖政宇
 * @date 2019-09-26 14:33
 * 说明:判断条件
 */
public class MyCondition implements Condition {
    @Override
    public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
        String ifCreate = conditionContext.getEnvironment().getProperty("ifCreate");
        if ("true".equals(ifCreate)){
            System.out.println("配置文件中,ifCreate的值为true");
            return true;
        }else {
            System.out.println("配置文件中,ifCreate的值为false");
            return false;
        }
    }
}
 
(2)Bean
package learnspring.learnspring.conditional;
/**
 * @author 肖政宇
 * @date 2019-09-26 14:45
 * 说明:
 */
public class DemoBean {
    public DemoBean() {
        System.out.println("Hello,DemoBean已经被创建!");
    }
}
 
(3)java配置类
package learnspring.learnspring.conditional;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
/**
 * @author 肖政宇
 * @date 2019-09-26 14:46
 * 说明:
 */
@Configuration
public class MyConditionalConfiguration {
    @Bean
    @Conditional(MyCondition.class)
    public DemoBean createBeanConditional() {
        return new DemoBean();
    }
}
 
(4)配置文件

(5)运行结果

    地势坤,君子以厚德载物。
 
                     
                    
                 
                    
                 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号