美文网首页
Springboot的注解驱动

Springboot的注解驱动

作者: 奋斗的韭菜汪 | 来源:发表于2020-07-02 16:16 被阅读0次

@Conditional():可以实现满足条件(例如:在某个环境下不装载,或者不满足某个条件的时候不装载,或者已经装置过了,不重复装载)才会加载bean到ioc容器
注意这是spring的注解

public class WzxCondition implements Condition {
    @Override
    public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
        return false;
    }
}

@Configuration
public class SpringConfiguration {
    @Conditional(WzxCondition.class)
    @Bean
    public DemoService demoService(){
        return new DemoService();
    }
}

public class DemoService {
}

public class ConditionMain {
    public static void main(String[] args) {
        ApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfiguration.class);
        System.out.println(ac.getBean(DemoService.class));
    }
}

spring IOC Bean的装载
1、xml 2、configration 3、 Enable

springBoot Bean的动态加载

public class WzxDefineImportSelector implements ImportSelector {
    @Override
    public String[] selectImports(AnnotationMetadata annotationMetadata) {
        //动态导入bean,告诉spring俩个配置类的位置
        //这里提供了starter组件加载配置类的方案,spring规定所有第三方组件配置类位置信息
        //只要放在classpath:META-INF/spring.factories文件中,springboot会自动扫
        // 描这个配置文件,从而实现springboot动态加载配置信息
        return new String[]{MybatisConfiguration.class.getName(), RedisConfiguration.class.getName()};
    }
}
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Import(WzxDefineImportSelector.class)
public @interface WzxEnableConfiguration {
}
public class MybatisConfiguration {
}

public class RedisConfiguration {
}
@WzxEnableConfiguration
@SpringBootApplication
public class SpringbootDemoApplication {
    public static void main(String[] args) {
        ConfigurableApplicationContext ca = SpringApplication.run(SpringbootDemoApplication.class, args);
        System.out.println(ca.getBean(MybatisConfiguration.class));
    }

运行结果:

com.wzx.example.demo.MybatisConfiguration@135606db

Process finished with exit code 0

相关文章

网友评论

      本文标题:Springboot的注解驱动

      本文链接:https://www.haomeiwen.com/subject/tqllqktx.html