在springboot的開發過程當中,咱們常常須要加載一些bean,若是bean使咱們本身寫的類,那很好辦,加個@Component註解就搞定了,而後過程啓動會掃描啓動類所在的包及其子包,若是咱們須要的bean不在本身的包裏面,在第三方包怎麼辦?這裏介紹一個使用spring.factories文件的方法
指望工程啓動的時候就加載這個bean到容器,咱們的包是提供給其餘人使用的,其餘工程的啓動了類所在的路徑不能覆蓋這個bean所在的包路徑,經過ComponouneScan掃描太麻煩了,並且需求是工程啓動後就加載bean,能夠這樣作:spring
在包下面的resources下面新建文件/META-INF/spring.factories文件,裏面寫上下面的內容springboot
org.springframework.boot.autoconfigure.EnableAutoConfiguration=cn.aaron911.shield.ShieldAutoConfiguration
右邊是你的一個類,而後在這個類裏面寫入:spa
@Configuration @ConditionalOnBean(annotation = EnableShieldDefence.class) @EnableConfigurationProperties(ShieldProperties.class) public class ShieldAutoConfiguration { private static final Logger log = LoggerFactory.getLogger(ShieldAutoConfiguration.class); @Autowired private ShieldProperties properties; @PostConstruct public void init() { log.info("You'll be safe with shield... "); log.info(properties.toString()); } @Bean @ConditionalOnMissingBean(name = {"shieldProcessor"}) public ShieldProcessor shieldProcessor() { return new ShieldProcessorDefence(); } @Bean(name = "shieldCache") public Cache shieldCache() { CacheType type = properties.getCacheType(); if (type == CacheType.REDIS) { return new RedisCache(); } return new ConcurrentHashMapCache(); } }