@-springboot-zj-spring-各种注解的解释

@ConditionalOnExpression

@ConditionalOnExpression(“'true”) 当括号中的内容为true时 ,使用该注解的类被实例化
它可以和@Service、@Component、@Controller、@Repository 、@Bean 、@Configuration 等注解一起使用。可以通过SPEL 表达式、读取配置文件属性来让IOC容器选择性的扫描加入指定的某个Bean。而不是将所有实现类Bean都加入到IOC。简单来说就是按需加载,而不是全部加载。

 @Bean
    @ConditionalOnExpression("#{'true'.equals(environment['print.sql.log.enable'])}")
    public SqlInterceptor myPlugin() {
   
   
        return new SqlInterceptor();
    }

@ConditionalOnExpression 三种玩法


@Configuration
public class MyConfiguration {
   
   

    @Bean
    @ConditionalOnExpression("'${spring.application.name}' == 'app-api' || '${spring.application.name}' == 'web-api'")
    public MyBean myBean() {
   
   
        return new MyBean();
    }
}

@Configuration
public class MyConfiguration {
   
   

    @Bean
    @ConditionalOnProperty(name = "spring.application.name", havingValue = "app-api")
    @ConditionalOnProperty(name = "spring.application.name", havingValue = "web-api")
    public MyBean myBean() {
   
   
        return new MyBean();
    }
}

import org.springframework.boot.autoconfigure.condition.Conditional;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.type.AnnotatedTypeMetadata;

@Configuration
public class MyConfiguration {
   
   

    @Bean
    @Conditional(OnApplicationNameCondition.class)
    public MyBean myBean() {
   
   
        return new MyBean();
    }

    public static class OnApplicationNameCondition implements Condition {
   
   
        @Override
        public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
   
   
            String applicationName = context.getEnvironment().getProperty("spring.application.name");
            return "app-api".equals(applicationName) || "web-api".equals
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值