一文教你实现SpringBoot自定义扩展

项目结构

一文教你实现SpringBoot自定义扩展_第1张图片

组件项目【dependent】

spring.factories自动装配定义

org.springframework.boot.autoconfigure.EnableAutoConfiguration=cn.fntop.config.AutoConfigExt

AutoConfigExt 装配默认配置

public class AutoConfigExt {
    @Bean
    public Ext ext() {
        return new DefaultExt();
    }
}

DefaultExt

public class DefaultExt implements Ext{
    @Override
    public String todo() {
        return "默认配置";
    }
}

Ext

public interface Ext {
    String todo();
}

自定义项目【依赖组件项目】

依赖组件项目

	
            cn.fntop
            fn-blog-dependent
            ${version}
        

自定义配置

@Configuration
@Primary
public class CustomeExt implements Ext{
    @Override
    public String todo() {
        return "这是自定义配置";
    }
}

编写启动类

@SpringBootApplication
public class FnBlogDependApplication implements ApplicationContextAware {
    private static ApplicationContext applicationContext;

    public static void main(String[] args) {
        SpringApplication.run(FnBlogDependApplication.class, args);
        String todo = applicationContext.getBean(Ext.class).todo();
        System.out.println(todo);
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        FnBlogDependApplication.applicationContext = applicationContext;
    }
}

测试结果

自定义配置
未开启@Configuration和@Primary时
打印默认配置
开启@Configuration和@Primary时
打印这是自定义配置

原文链接

你可能感兴趣的:(spring,boot,java,spring)