哪家上市公司做視頻網(wǎng)站培訓(xùn)機(jī)構(gòu)專業(yè)
Spring 外部jar包Bean自動(dòng)裝配
背景介紹
公共代碼模塊被作為jar包引入業(yè)務(wù)項(xiàng)目,前者定義的bean即使添加了@Component注解由于不會(huì)被掃描到也就無(wú)法被Spring管理。此處通過(guò)Spring SPI機(jī)制來(lái)完成
使用 spring.factories
- 在外部 jar 包中創(chuàng)建
spring.factories
文件: 在外部 jar 包的src/main/resources/META-INF/
目錄下創(chuàng)建spring.factories
文件。 - 配置
spring.factories
文件: 在spring.factories
文件中,添加需要自動(dòng)配置的類,例如:
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.huakai.springenv.utils.SpringUtil
- 配置類: 確保你的配置類是一個(gè)有效的 Spring 配置類,并且可以正確配置所需的 Beans。
package com.huakai.springenv.utils;import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;/*** @author huakai*/
@Component
public class SpringUtil implements ApplicationContextAware {/*** 上下文對(duì)象實(shí)例*/private static ApplicationContext applicationContext;@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {this.applicationContext = applicationContext;}/*** 獲取applicationContext* @return*/public static ApplicationContext getApplicationContext() {return applicationContext;}/*** 通過(guò)name獲取 Bean.* @param name* @return*/public static Object getBean(String name){return getApplicationContext().getBean(name);}
}
這樣,當(dāng)你的 Spring Boot 應(yīng)用啟動(dòng)時(shí),會(huì)自動(dòng)掃描并加載 spring.factories 文件中指定的配置類,并將其作為 Spring 配置的一部分。