spring-boot-note2---import、condition、props等

本文详细介绍了Spring Boot中条件注解如@ConditionalOnClass、@ConditionalOnMissingBean、@ConditionalOnProperty的使用,以及资源文件的加载方法,包括@value、@ConfigurationProperties的结合应用。此外,还探讨了@import注解的三种导入bean方式,包括直接导入类和实现ImportSelector接口的示例。
摘要由CSDN通过智能技术生成

一、condition系列注解

    1.1 常用condition列举:

    @ConditionalOnClass  //当classpath下发现该类的情况下进行自动配置

    @ConditionalOnMissingBean //当Spring Context中不存在该Bean时。

    @ConditionalOnProperty(prefix = "example.service",value = "enabled",havingValue = "true") //当配置文件中example.service.enabled=true时。

   1.2 自定义condition演示:

   @Conditional 注解需要传入一个condition类,此类实现Condition类,核心方法就是matches,如果返回true,那么被注解的bean就创建,反之。

public class MyBeanCondition implements Condition{

	@Override
	public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata metadata) {
		// 注解标记的类
		System.out.println(metadata.getClass().getName());
		// 强转
		StandardMethodMetadata standardMethodMetadata = (StandardMethodMetadata)metadata;
		// 方法名称
		System.out.println(standardMethodMetadata.getMethodName());
		
        conditionContext.getRegistry(); // 获取注册的bean
 
        conditionContext.getBeanFactory(); //获取提供bean definition的解析,注册功能,再对单例来个预加载(解决循环依赖问题).
 
        conditionContext.getEnvironment(); //获取环境配置
 
        conditionContext.getResourceLoader(); //ResourceLoader所加载的资源
 
        conditionContext.getClassLoader(); //获取类加载器
 
        //annotatedTypeMetadata 被加上注解的源数据信息。比如annotatedTypeMetadata.
        return conditionContext.getRegistry().containsBeanDefinition("myBean") && !conditionContext.getRegistry().containsBeanDefinition("cat");

	}

}

MybeanCondition就是判断容器中存在mybean&#x

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值